我如何确定计算机上安装了哪种版本的PowerShell,以及是否确实安装了PowerShell?
当前回答
以下cmdlet将返回PowerShell版本。
$PSVersionTable.PSVersion.Major
其他回答
使用$PSVersionTable.PSVersion确定引擎版本。如果变量不存在,则可以安全地假设引擎为1.0版本。
请注意,$Host.Version和(Get-Host).Version不可靠-它们反映只有主机的版本,而不是引擎。PowerGUI,PowerShellPLUS等都是托管应用程序,并且他们将设置主机的版本以反映其产品版本-这是完全正确的,但不是你想要的。
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
忘记此页面并永远不返回它的最简单方法是学习Get Variable:
Get-Variable | where {$_.Name -Like '*version*'} | %{$_[0].Value}
没有必要记住每个变量。仅获取变量就足够了(而且“版本应该有一些东西”)。
Use:
$psVersion = $PSVersionTable.PSVersion
If ($psVersion)
{
#PowerShell Version Mapping
$psVersionMappings = @()
$psVersionMappings += New-Object PSObject -Property @{Name='5.1.14393.0';FriendlyName='Windows PowerShell 5.1 Preview';ApplicableOS='Windows 10 Anniversary Update'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.1.14300.1000';FriendlyName='Windows PowerShell 5.1 Preview';ApplicableOS='Windows Server 2016 Technical Preview 5'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.494';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3172985 1607'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.122';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3140743 1603'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.117';FriendlyName='Windows PowerShell 5 RTM 1602';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.63';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3135173 1602'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.51';FriendlyName='Windows PowerShell 5 RTM 1512';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10514.6';FriendlyName='Windows PowerShell 5 Production Preview 1508';ApplicableOS='Windows Server 2012 R2'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10018.0';FriendlyName='Windows PowerShell 5 Preview 1502';ApplicableOS='Windows Server 2012 R2'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.9883.0';FriendlyName='Windows PowerShell 5 Preview November 2014';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows 8.1'}
$psVersionMappings += New-Object PSObject -Property @{Name='4.0';FriendlyName='Windows PowerShell 4 RTM';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
$psVersionMappings += New-Object PSObject -Property @{Name='3.0';FriendlyName='Windows PowerShell 3 RTM';ApplicableOS='Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8, and Windows 7 SP1'}
$psVersionMappings += New-Object PSObject -Property @{Name='2.0';FriendlyName='Windows PowerShell 2 RTM';ApplicableOS='Windows Server 2008 R2 SP1 and Windows 7'}
foreach ($psVersionMapping in $psVersionMappings)
{
If ($psVersion -ge $psVersionMapping.Name) {
@{CurrentVersion=$psVersion;FriendlyName=$psVersionMapping.FriendlyName;ApplicableOS=$psVersionMapping.ApplicableOS}
Break
}
}
}
Else{
@{CurrentVersion='1.0';FriendlyName='Windows PowerShell 1 RTM';ApplicableOS='Windows Server 2008, Windows Server 2003, Windows Vista, Windows XP'}
}
您可以从How to determined installed PowerShell version下载详细脚本。
要检查是否安装了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
资料来源:本网站。
Microsoft建议的用于检查是否安装了PowerShell并确定已安装版本的前向兼容方法是查看两个特定的注册表项。我在这里复制了细节,以防链接断开。
根据链接页面:
根据任何其他注册表项、PowerShell.exe版本或PowerShell.exe的位置,不能保证长期工作。
要检查是否安装了任何版本的PowerShell,请检查注册表中的以下值:
密钥位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shell\1值名称:安装值类型:REG_DWORD值数据:0x00000001(1
要检查是否安装了PowerShell版本1.0或2.0,请检查注册表中的以下值:
密钥位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shell\1\PowerShellEngine值名称:PowerShellVersion值类型:REG_SZ值数据:<1.0|2.0>
推荐文章
- 数组添加 vs +=
- 在使用“apt-get”安装包之前,我如何检查版本?
- PowerShell中用户输入的提示符
- 如何在Angular中显示应用版本?
- 如何从字符串执行任意本机命令?
- 如何使用。net 4运行时运行PowerShell ?
- Flutter:升级游戏商店的版本代码
- 在PowerShell中重新加载路径
- 函数在PowerShell中的返回值
- 如何在PowerShell中输出一些东西
- 调用webrequest, POST参数
- 如何在使用新语言特性的程序中检查Python版本?
- 无法加载.ps1,因为在此系统上禁止执行脚本
- 如何获得正在执行的cmdlet的当前目录
- 如何从批处理文件运行PowerShell脚本