¿Cómo puedo determinar qué versión de PowerShell está instalada en un ordenador y, de hecho, si está instalada?
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
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"}
}
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.