Come posso determinare quale versione di PowerShell è installata su un computer, e se è installata affatto?
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
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"}
}
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.