Hvordan kan jeg finne ut hvilken versjon av PowerShell som er installert på en datamaskin, og om den i det hele tatt er installert?
Bruk $PSVersionTable.PSVersion
for å bestemme motorversjonen. Hvis variabelen ikke finnes, er det trygt å anta at motoren er versjon 1.0
.
Vær oppmerksom på at $Host.Version
og (Get-Host).Version
ikke er pålitelige - de gjenspeiler bare versjonen av verten, ikke
bare versjonen av verten, ikke motoren. PowerGUI,
PowerShellPLUS, etc. er alle vertsapplikasjoner, og
de vil sette vertsversjonen til å gjenspeile sitt produkt
som er helt riktig, men ikke det du leter etter.
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
For å avgjøre om PowerShell er installert, kan du sjekke registeret for eksistensen av
HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install
og
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3
og, hvis den finnes, om verdien er 1 (for installert), som beskrevet i blogginnlegget Check if PowerShell installed and version.
For å bestemme hvilken versjon av PowerShell som er installert, kan du sjekke registernøklene
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion
og
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion
For å bestemme hvilken versjon av PowerShell som er installert fra et .ps1-skript, kan du bruke følgende one-liner, som beskrevet på PowerShell.com i Hvilken PowerShell-versjon kjører jeg.
$isV2 = test-path variable:\psversiontable
Det samme nettstedet gir også en funksjon for å returnere versjonen:
function Get-PSVersion {
if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}
For å sjekke om PowerShell er installert, bruk:
HKLM\Software\Microsoft\PowerShell\1 Install ( = 1 )
For å sjekke om RC2 eller RTM er installert bruk:
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-00301) -- For RC2
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-04309) -- For RTM
Kilde: dette nettstedet.