我怎样才能确定计算机上安装的是什么版本的PowerShell,以及它是否被安装了?
使用$PSVersionTable.PSVersion
来确定引擎的版本。如果该变量不存在,可以安全地认为引擎是1.0
版本。
注意$Host.Version
和(Get-Host).Version
是不可靠的 - 它们只反映了主机的版本,而不是引擎的版本。
它们只反映主机的版本,而不是引擎的版本。PowerGUI。
PowerShellPLUS等都是宿主应用程序,它们会设置宿主版本。
他们将设置主机的版本以反映他们的产品
版本 —这完全正确,但不是你要找的。
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
要确定PowerShell是否已经安装,你可以检查注册表中是否存在
HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install
和
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3
以及如果存在,其值是否为1(表示已安装),详见博文检查PowerShell是否安装和版本。
要确定所安装的PowerShell的版本,你可以检查注册表的键值
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion
和
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion
要从.ps1脚本中确定所安装的PowerShell的版本,可以使用下面的单行代码,详见PowerShell.com上的Which PowerShell Version Am I Running。
$isV2 = test-path variable:\psversiontable
该网站还提供了一个函数来返回版本。
function Get-PSVersion {
if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}
要检查PowerShell是否已经安装,请使用。
HKLM\Software\Microsoft\PowerShell\1 Install ( = 1 )
检查是否安装了RC2或RTM,请使用。
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-00301) -- For RC2
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-04309) -- For RTM
来源。本网站。