使用$PSVersionTable.PSVersion
确定引擎版本。如果变量不存在,则可以安全地假设引擎是1.0
版。
请注意, $Host.Version
和(Get-Host).Version
不可靠 - 它们仅反映主机的版本,而不是引擎。 PowerGUI,PowerShellPLUS 等都是托管应用程序,他们将设置主机的版本以反映他们的产品版本 - 这是完全正确的,但不是你想要的。
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
我会使用Get-Host或$ PSVersionTable 。正如 Andy Schneider 所指出的, $PSVersionTable
在版本 1 中不起作用; 它是在第 2 版中引入的。
get-host
Name : ConsoleHost
Version : 2.0
InstanceId : d730016e-2875-4b57-9cd6-d32c8b71e18a
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : en-GB
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
$PSVersionTable
Name Value
---- -----
CLRVersion 2.0.50727.4200
BuildVersion 6.0.6002.18111
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.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 上详细介绍的PowerShell 版本运行 。
$isV2 = test-path variable:\psversiontable
同一站点还提供了返回版本的功能:
function Get-PSVersion {
if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}