确定已安装的PowerShell版本

我怎样才能确定计算机上安装的是什么版本的PowerShell,以及它是否被安装了?

解决办法

使用$PSVersionTable.PSVersion来确定引擎的版本。如果该变量不存在,可以安全地认为引擎是1.0版本。

注意$Host.Version(Get-Host).Version是不可靠的 - 它们只反映了主机的版本,而不是引擎的版本。 它们只反映主机的版本,而不是引擎的版本。PowerGUI。 PowerShellPLUS等都是宿主应用程序,它们会设置宿主版本。 他们将设置主机的版本以反映他们的产品 版本 —这完全正确,但不是你要找的。

PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1
评论(10)

要确定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"}
}
评论(2)

要检查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

来源。本网站

评论(0)