Determinar la versión de PowerShell instalada

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

Solución

Utilice $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 fiables - reflejan reflejan sólo la versión del host, no del motor. PowerGUI, PowerShellPLUS, etc. son aplicaciones de alojamiento, y y establecen la versión del host para reflejar la versión de su producto. versión — lo cual es totalmente correcto, pero no es lo que está buscando.

PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1
Comentarios (10)

Para determinar si PowerShell está instalado, puede comprobar en el registro 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 entrada del blog Comprobar si PowerShell está instalado y la versión.

Para determinar la versión de PowerShell que está instalada, puedes comprobar las claves del 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 está instalada desde un script .ps1, puede utilizar la siguiente línea de comandos, 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"}
}
Comentarios (2)

Para comprobar si PowerShell está instalado utilice:

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

Para comprobar si está instalado RC2 o RTM utilice:

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.

Comentarios (0)