如何确定计算机上安装的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
我也会用 GET-主机 要么 $ 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"}
}
你可以看一下内置变量, $psversiontable
。如果它不存在,则有V1。如果确实存在,它将为您提供所需的所有信息。
1 > $psversiontable
Name Value
---- -----
CLRVersion 2.0.50727.4927
BuildVersion 6.1.7600.16385
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
只想在这里加2美分。
您只能通过调用powershell直接检查一行版本 外部,例如来自命令提示符
powershell -Command "$PSVersionTable.PSVersion"
编辑:
根据 @psaul 您 能够 实际上有一个命令与它来自哪里是不可知的(CMD,Powershell或Pwsh),谢谢你。
powershell -command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"
我已经测试过,它在CMD和Powershell上都能完美运行
您可以通过完成以下检查来验证安装的Windows PowerShell版本:
在Windows PowerShell控制台中,在命令提示符处键入以下命令,然后按Enter:
获取主机|选择对象版本
您将看到如下所示的输出:
Version
-------
3.0
http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/
Microsoft推荐的前向兼容方法,用于检查是否已安装PowerShell并确定已安装的版本 是看两个特定的注册表项。我已经在这里重现了细节,以防链接中断。
根据链接页面:
取决于任何其他注册表项,或PowerShell.exe的版本或PowerShell.exe的位置不能保证长期工作。
检查是否 任何版本 安装PowerShell,检查注册表中的以下值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
去检查 无论是版本1.0还是2.0 安装PowerShell,检查注册表中的以下值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
我找到了检查安装是否最简单的方法:
cmd
那么OK)powershell
然后回击。然后你应该得到PowerShell PS
提示:C:\Users\MyUser>powershell
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.
PS C:\Users\MyUser>
然后,您可以通过键入来从PowerShell提示中检查版本 $PSVersionTable.PSVersion
:
PS C:\Users\MyUser> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
PS C:\Users\MyUser>
类型 exit
如果你想回到命令提示符(exit
再次,如果你还想关闭命令提示符)。
要运行脚本,请参阅 http://ss64.com/ps/syntax-run.html。