Determinare la versione di PowerShell installata

Come posso determinare quale versione di PowerShell è installata su un computer, e se è installata affatto?

Soluzione

Usa $PSVersionTable.PSVersion per determinare la versione del motore. Se la variabile non esiste, è sicuro assumere che il motore sia la versione 1.0.

Nota che $Host.Version e (Get-Host).Version non sono affidabili - riflettono riflettono solo la versione dell'host, non del motore. PowerGUI, PowerShellPLUS, ecc. sono tutte applicazioni di hosting, e e imposteranno la versione dell'host per riflettere il loro prodotto versione — che è completamente corretto, ma non quello che stai cercando.

PS C:\> $PSVersionTable.PSVersion

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

Per determinare se PowerShell è installato, puoi controllare il registro per l'esistenza di

HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install

e

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3

e, se esiste, se il valore è 1 (per installato), come dettagliato nel post del blog Check if PowerShell installed and version.

Per determinare la versione di PowerShell che è installata, puoi controllare le chiavi di registro

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion

e

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion

Per determinare la versione di PowerShell che è installata da uno script .ps1, puoi usare il seguente one-liner, come dettagliato su PowerShell.com in Which PowerShell Version Am I Running.

$isV2 = test-path variable:\psversiontable

Lo stesso sito fornisce anche una funzione per restituire la versione:

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

Per controllare se PowerShell è installato usa:

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

Per controllare se RC2 o RTM è installato usa:

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

Fonte: questo sito.

Commentari (0)