update comandos actualizar powershell

comandos - Determine la versión instalada de PowerShell



update powershell version (24)

¿Cómo puedo determinar qué versión de PowerShell está instalada en una computadora y, de hecho, si está instalada?


Ampliando la respuesta con un operador de selección:

Get-Host | select {$_.Version}


Comando $PSVersionTable.PSVersion es útil.

Major Minor Patch PreReleaseLabel BuildLabel ----- ----- ----- --------------- ---------- 6 1 0


Dado que la respuesta más útil no abordó la parte de si existe , pensé en darle una respuesta a través de una solución rápida y sucia. Depende de que PowerShell esté en la variable de entorno de ruta , que es lo que probablemente desee. (La punta del sombrero a la parte superior responde porque no lo sabía). Pega esto en un archivo de texto y nómbrelo.

Prueba Powershell Version.cmd

o similar.

@echo off echo Checking powershell version... del "%temp%/PSVers.txt" 2>nul powershell -command "[string]$PSVersionTable.PSVersion.Major +''.''+ [string]$PSVersionTable.PSVersion.Minor | Out-File ([string](cat env:/temp) + ''/PSVers.txt'')" 2>nul if errorlevel 1 ( echo Powershell is not installed. Please install it from download.Microsoft.com; thanks. ) else ( echo You have installed Powershell version: type "%temp%/PSVers.txt" del "%temp%/PSVers.txt" 2>nul ) timeout 15


El siguiente cmdlet devolverá la versión de PowerShell.

$PSVersionTable.PSVersion.Major


Encontré que la forma más fácil de verificar si estaba instalado era:

  • ejecutar un símbolo del sistema (Inicio, Ejecutar, cmd , luego Aceptar)
  • escribe powershell luego powershell retorno. A continuación, debe obtener el indicador de PowerShell PS :

C:/Users/MyUser>powershell Windows PowerShell Copyright (C) 2009 Microsoft Corporation. All rights reserved. PS C:/Users/MyUser>

Luego puede verificar la versión desde el indicador de PowerShell escribiendo $PSVersionTable.PSVersion :

PS C:/Users/MyUser> $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 2 0 -1 -1 PS C:/Users/MyUser>

Escriba exit si desea volver al símbolo del sistema (vuelva a exit si también desea cerrar el símbolo del sistema).

Para ejecutar scripts, consulte http://ss64.com/ps/syntax-run.html .


La forma más fácil de olvidar esta página y nunca volver a ella es aprender la Get-Variable :

Get-Variable | where {$_.Name -Like ''*version*''} | %{$_[0].Value}

No hay necesidad de recordar cada variable. Solo Get-Variable es suficiente (y "Debe haber algo acerca de la versión").


Necesitaba verificar la versión de PS y luego ejecutar el código apropiado. Algunos de nuestros servidores ejecutan v5, otros v4. Esto significa que algunas funciones, como la compresión, pueden o no estar disponibles.

Esta es mi solución:

if ($PSVersionTable.PSVersion.Major -eq 5) { #Execute code available in 5, like Compress Write-Host "You are running version 5" } else { #Use a different process Write-Host "This is version $PSVersionTable.PSVersion.Major" }


Para determinar si PowerShell está instalado, puede verificar el registro para la existencia de

HKEY_LOCAL_MACHINE/Software/Microsoft/PowerShell/1/Install

y

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/PowerShell/3

y, si existe, si el valor es 1 (para instalado), como se detalla en la publicación del blog. Verifique si PowerShell está instalado y la versión .

Para determinar la versión de PowerShell que está instalada, puede verificar las claves de registro

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/PowerShell/1/PowerShellEngine/PowerShellVersion

y

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/PowerShell/3/PowerShellEngine/PowerShellVersion

Para determinar la versión de PowerShell que se instala desde una secuencia de comandos .ps1, puede usar la siguiente línea rápida, tal como se detalla en PowerShell.com, en qué versión de PowerShell estoy ejecutando .

$isV2 = test-path variable:/psversiontable

El mismo sitio también da una función para devolver la versión:

function Get-PSVersion { if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"} }


Para verificar si PowerShell está instalado use:

HKLM/Software/Microsoft/PowerShell/1 Install ( = 1 )

Para verificar si RC2 o RTM está instalado use:

HKLM/Software/Microsoft/PowerShell/1 PID (=89393-100-0001260-00301) -- For RC2 HKLM/Software/Microsoft/PowerShell/1 PID (=89393-100-0001260-04309) -- For RTM

Fuente: este sitio web .


Probar;) ((Get-Host).Version).Major


Pruébalo con el siguiente comando:

Get-Host

Visto here


Puede verificar que la versión de Windows PowerShell instalada al completar la siguiente verificación:

  1. Haga clic en Inicio, haga clic en Todos los programas, haga clic en Accesorios, haga clic en Windows PowerShell y, a continuación, haga clic en Windows PowerShell.
  2. En la consola de Windows PowerShell, escriba el siguiente comando en el símbolo del sistema y luego presione INTRO:

    Get-Host | Versión de objeto selecto

Verás una salida que se ve así:

Version ------- 3.0

http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/


Puedes mirar la variable incorporada, $psversiontable . Si no existe, tienes V1. Si existe, le dará toda la información que necesita.

1 > $psversiontable Name Value ---- ----- CLRVersion 2.0.50727.4927 BuildVersion 6.1.7600.16385 PSVersion 2.0 WSManStackVersion 2.0 PSCompatibleVersions {1.0, 2.0} SerializationVersion 1.1.0.1 PSRemotingProtocolVersion 2.1


Solo quiero agregar mis 2 centavos aquí.

Puede verificar directamente la versión con una sola línea invocando powershell externamente , como desde el símbolo del sistema.

powershell -Command "$PSVersionTable.PSVersion"

EDITAR:

De acuerdo con @psaul , en realidad puedes tener un comando que sea agnóstico de donde vino (CMD, Powershell o Pwsh), gracias por eso.

powershell -command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"

He probado y funcionó perfectamente tanto en CMD como en Powershell


También puede llamar al comando "host" desde la línea de comandos de PowerShell. Debe darle el valor de la variable $host .


Usualmente lo obtienes usando el número Mayor que puedes obtener de esta manera:

$PSVersionTable.PSVersion.Major


Utilice Get-Host para obtener los detalles de la versión de PowerShell:

PS C:/Users/ashash001c> Get-Host Name : ConsoleHost Version : 2.0 InstanceId : ################################## UI : System.Management.Automation.Internal.Host.InternalHostUserI nterface CurrentCulture : en-US CurrentUICulture : en-US PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace


Utilice el comando Get-Host . La segunda línea del resultado es la versión.


Utilizar:

$psVersion = $PSVersionTable.PSVersion If ($psVersion) { #PowerShell Version Mapping $psVersionMappings = @() $psVersionMappings += New-Object PSObject -Property @{Name=''5.1.14393.0'';FriendlyName=''Windows PowerShell 5.1 Preview'';ApplicableOS=''Windows 10 Anniversary Update''} $psVersionMappings += New-Object PSObject -Property @{Name=''5.1.14300.1000'';FriendlyName=''Windows PowerShell 5.1 Preview'';ApplicableOS=''Windows Server 2016 Technical Preview 5''} $psVersionMappings += New-Object PSObject -Property @{Name=''5.0.10586.494'';FriendlyName=''Windows PowerShell 5 RTM'';ApplicableOS=''Windows 10 1511 + KB3172985 1607''} $psVersionMappings += New-Object PSObject -Property @{Name=''5.0.10586.122'';FriendlyName=''Windows PowerShell 5 RTM'';ApplicableOS=''Windows 10 1511 + KB3140743 1603''} $psVersionMappings += New-Object PSObject -Property @{Name=''5.0.10586.117'';FriendlyName=''Windows PowerShell 5 RTM 1602'';ApplicableOS=''Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1''} $psVersionMappings += New-Object PSObject -Property @{Name=''5.0.10586.63'';FriendlyName=''Windows PowerShell 5 RTM'';ApplicableOS=''Windows 10 1511 + KB3135173 1602''} $psVersionMappings += New-Object PSObject -Property @{Name=''5.0.10586.51'';FriendlyName=''Windows PowerShell 5 RTM 1512'';ApplicableOS=''Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1''} $psVersionMappings += New-Object PSObject -Property @{Name=''5.0.10514.6'';FriendlyName=''Windows PowerShell 5 Production Preview 1508'';ApplicableOS=''Windows Server 2012 R2''} $psVersionMappings += New-Object PSObject -Property @{Name=''5.0.10018.0'';FriendlyName=''Windows PowerShell 5 Preview 1502'';ApplicableOS=''Windows Server 2012 R2''} $psVersionMappings += New-Object PSObject -Property @{Name=''5.0.9883.0'';FriendlyName=''Windows PowerShell 5 Preview November 2014'';ApplicableOS=''Windows Server 2012 R2, Windows Server 2012, Windows 8.1''} $psVersionMappings += New-Object PSObject -Property @{Name=''4.0'';FriendlyName=''Windows PowerShell 4 RTM'';ApplicableOS=''Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1''} $psVersionMappings += New-Object PSObject -Property @{Name=''3.0'';FriendlyName=''Windows PowerShell 3 RTM'';ApplicableOS=''Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8, and Windows 7 SP1''} $psVersionMappings += New-Object PSObject -Property @{Name=''2.0'';FriendlyName=''Windows PowerShell 2 RTM'';ApplicableOS=''Windows Server 2008 R2 SP1 and Windows 7''} foreach ($psVersionMapping in $psVersionMappings) { If ($psVersion -ge $psVersionMapping.Name) { @{CurrentVersion=$psVersion;FriendlyName=$psVersionMapping.FriendlyName;ApplicableOS=$psVersionMapping.ApplicableOS} Break } } } Else{ @{CurrentVersion=''1.0'';FriendlyName=''Windows PowerShell 1 RTM'';ApplicableOS=''Windows Server 2008, Windows Server 2003, Windows Vista, Windows XP''} }

Puede descargar la secuencia de comandos detallada desde Cómo determinar la versión instalada de PowerShell .


Yo usaría Get-Host o $ PSVersionTable . Como señala Andy Schneider, $PSVersionTable no funciona en la versión 1; Fue introducido en la versión 2.

get-host Name : ConsoleHost Version : 2.0 InstanceId : d730016e-2875-4b57-9cd6-d32c8b71e18a UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : en-GB CurrentUICulture : en-US PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace $PSVersionTable Name Value ---- ----- CLRVersion 2.0.50727.4200 BuildVersion 6.0.6002.18111 PSVersion 2.0 WSManStackVersion 2.0 PSCompatibleVersions {1.0, 2.0} SerializationVersion 1.1.0.1 PSRemotingProtocolVersion 2.1


El método recomendado de compatibilidad con Microsoft para verificar si PowerShell está instalado y determinar la versión instalada es mirar dos claves de registro específicas. He reproducido los detalles aquí en caso de que el enlace se rompa.

Según la página enlazada:

Dependiendo de cualquier otra clave de registro, versión de PowerShell.exe o la ubicación de PowerShell.exe no se garantiza que funcione a largo plazo.

Para verificar si alguna versión de PowerShell está instalada, verifique el siguiente valor en el registro:

  • Ubicación clave: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/PowerShell/1
  • Nombre de valor: Instalar
  • Tipo de valor: REG_DWORD
  • Información del valor: 0x00000001 (1

Para verificar si la versión 1.0 o 2.0 de PowerShell está instalada, verifique el siguiente valor en el registro:

  • Ubicación clave: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/PowerShell/1/PowerShellEngine
  • Nombre del valor: PowerShellVersion
  • Tipo de valor: REG_SZ
  • Datos de valor: <1.0 | 2.0>

$host.version es simplemente incorrecto / no confiable. Esto le da la versión del ejecutable de alojamiento (powershell.exe, powergui.exe, powershell_ise.exe, powershellplus.exe, etc.) y no la versión del motor en sí.

La versión del motor está contenida en $psversiontable.psversion . Para PowerShell 1.0, esta variable no existe, por lo que, obviamente, si esta variable no está disponible, es completamente seguro asumir que el motor es 1.0, obviamente.


Use $PSVersionTable.PSVersion para determinar la versión del motor. Si la variable no existe, es seguro asumir que el motor es la versión 1.0 .

Tenga en cuenta que $Host.Version y (Get-Host).Version no son confiables; reflejan solo la versión del host, no el motor. PowerGUI, PowerShellPLUS, etc. son aplicaciones de hospedaje, y configurarán la versión del host para que refleje la versión de su producto, lo cual es totalmente correcto, pero no lo que está buscando.

PS C:/> $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 4 0 -1 -1


# Get PowerShell Version function Global:version { $PSVersionTable.PSVersion }