要检查系统中安装的PowerShell版本,可以使用$PSVersionTable或$host命令。
检查$host命令在远程服务器中是否可用。
在系统中打开PowerShell控制台,然后运行命令$PSVersionTable。
$PSVersionTable
输出结果
PS C:\WINDOWS\system32> $PSVersionTable Name Value ---- ----- PSVersion 5.1.18362.628 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.18362.628 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
因此,这里有$PSVersionTable的输出。您可以看到输出属性$PSVersion,该属性指示PowerShell的版本信息。
$PSVersionTable.PSVersion
输出结果
Major Minor Build Revision ----- ----- ----- -------- 5 1 18362 628
在Major属性中,它指示PowerShell版本为5且Build为18362。
同样,您可以在PowerShell中使用$Host命令获得以上输出。
PS C:\WINDOWS\system32> $Host Name : ConsoleHost Version : 5.1.18362.628 InstanceId : f6d2bf19-db26-403b-9749-afede37ea56f UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture :en-IN CurrentUICulture : en-US PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy DebuggerEnabled : True IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace
您可以从version属性获取PowerShell版本。
$Host.Version
输出结果
PS C:\WINDOWS\system32> $Host.Version Major Minor Build Revision ----- ----- ----- -------- 5 1 18362 628
要在远程计算机上获取输出,您需要使用Invoke-Command或PSRemote会话命令作为$PSverionTable,并且$Host不支持− ComputerName参数。
Invoke-Command -ComputerName Test-PC -ScriptBlock{$PSVersionTable.PSVersion}
如果您有多台计算机,并且需要使用主机名和PS版本(而不是主机名),则可以使用Pipeline或PSCustomObject命令。
Invoke-Command -ComputerName Test-PC,DC1 -ScriptBlock{$PSVersionTable.PSVersion} | Select PSComputerName, @{N="PS Version";E={$_.Major}}
如果有服务器列表,则可以将所有服务器添加到文本文件中并运行上述命令。
例如,我们有服务器列表存储在D:\ Temp \ Servers.txt中,我们需要在它们上获取PS版本。
Invoke-Command -ComputerName (Get-Content D:\Temp\Servers.txt) - ScriptBlock{$PSVersionTable.PSVersion} | Select PSComputerName, @{N="PS Version";E={$_.Major}}