Como posso determinar que versão do PowerShell está instalada num computador e, de facto, se está de todo instalada?
Utilize $PSVersionTable.PSVersion
para determinar a versão do motor. Se a variável não existir, é seguro assumir que o motor é a versão 1.0
.
Note que $Host.Version
e (Get-Host).Version
não são confiáveis - elas refletem
apenas a versão do anfitrião, não o motor. PowerGUI,
PowerShellPLUS, etc. são todos aplicativos de hospedagem, e
eles definirão a versão do anfitrião para refletir o seu produto
version — o que é inteiramente correto, mas não o que você está procurando.
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
Para determinar se o PowerShell está instalado, você pode verificar no registro a existência de
HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install
e
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3
e, se existir, se o valor é 1 (para instalado), como detalhado no post do blog Verifique se PowerShell instalado e versão.
Para determinar a versão do PowerShell que está instalado, você pode verificar as chaves de registro
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion
e
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion
Para determinar a versão do PowerShell que é instalada a partir de um script .ps1, você pode usar o seguinte one-liner, como detalhado no PowerShell.com em Que versão do PowerShell estou executando.
$isV2 = test-path variable:\psversiontable
O mesmo site também dá uma função para devolver a versão:
function Get-PSVersion {
if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}
Para verificar se o PowerShell está instalado, utilize:
HKLM\Software\Microsoft\PowerShell\1 Install ( = 1 )
Para verificar se o RC2 ou RTM está instalado, utilize:
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: este site.