我如何确定计算机上安装了哪种版本的PowerShell,以及是否确实安装了PowerShell?
当前回答
PowerShell 7
只有在计算机上安装了一个版本的PowerShell时,接受的答案才适用。随着PowerShell 7的出现,这种情况变得越来越不可能。
Microsoft的文档指出,安装PowerShell 7时会创建其他注册表项:
从PowerShell 7.1开始,[安装程序]包创建注册表项存储PowerShell安装位置和版本的。这些值位于HKLM\Software\Microsoft\PowerShellCore\InstalledVersions\<GUID>。这个<GUID>的值对于每个生成类型(发布或预览)都是唯一的,主要版本和架构。
在前面提到的位置搜索注册表会发现以下注册表值:SemanticVersion。该值包含我们所寻求的信息。
在我的计算机上,显示如下:
Path Name Type Data
---- ---- ---- ----
HKLM:\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions\31ab5147-9a97-4452-8443-d9709f0516e1 SemanticVersion String 7.1.3
如您所见,我电脑上安装的PowerShell 7版本为7.1.3。如果目标计算机上未安装PowerShell 7,则整个密钥不应存在。
如Microsoft文档中所述,注册表路径将根据安装的PowerShell版本略有不同。
在某些情况下,部分关键路径更改可能会带来挑战,但对于那些对基于命令行的解决方案感兴趣的人来说,PowerShell本身可以轻松处理此问题。
用于查询此注册表值中的数据的PowerShell cmdlet是Get-ItemPropertyValue cmdlet。如下所示观察其使用和输出(注意使用星号通配符代替可能更改的关键路径部分):
PS> Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions\*" -Name "SemanticVersion"
7.1.3
只是一个简单的单线。
其他回答
以下cmdlet将返回PowerShell版本。
$PSVersionTable.PSVersion.Major
要检查是否安装了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
资料来源:本网站。
我会使用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
我在7.1.0版上尝试过,结果成功了:
$PSVersionTable | Select-Object PSVersion
输出
PSVersion
---------
7.1.0
但它在5.1版上不起作用,所以在7版以下的版本上更适用:
$PSVersionTable.PSVersion
输出
Major Minor Build Revision
----- ----- ----- --------
5 1 18362 1171
EDIT
从PowerShell 7.2.5开始,您现在可以执行以下操作:
pwsh -v
Or
pwsh --version
输出
PowerShell 7.2.5
用选择运算符扩展答案:
Get-Host | select {$_.Version}
推荐文章
- 数组添加 vs +=
- 在使用“apt-get”安装包之前,我如何检查版本?
- PowerShell中用户输入的提示符
- 如何在Angular中显示应用版本?
- 如何从字符串执行任意本机命令?
- 如何使用。net 4运行时运行PowerShell ?
- Flutter:升级游戏商店的版本代码
- 在PowerShell中重新加载路径
- 函数在PowerShell中的返回值
- 如何在PowerShell中输出一些东西
- 调用webrequest, POST参数
- 如何在使用新语言特性的程序中检查Python版本?
- 无法加载.ps1,因为在此系统上禁止执行脚本
- 如何获得正在执行的cmdlet的当前目录
- 如何从批处理文件运行PowerShell脚本