什么版本的Windows Management Framework安装?

如何检查Windows Management Framework(WMF)的安装版本? 似乎应该是一件简单的事情,但我不能。 即使用谷歌search一堆不同版本的问题,几乎没有变化。

这不是在appwiz.cpl中,registry没有find“Windows Management Framework”的任何东西,它发现太多的“wmf”

我只是想知道如何检查它,以任何合理的方式。 有没有registry键? 有我可以检查的文件吗? 什么???

我能find的最接近的东西是在serverfault: 检测Windows Management Framework版本的方法 。 这个问题开始是一样的,但似乎要求在GPO中使用特定的检查方式; 也许这就是为什么没有答案。

有多台电脑我想检查这个。 我开始的是Windows Server 2008 R2 Standard。 还会有其他的Windows Server操作系统。

如果您知道任何比我有效的标签,请发表评论或重新标注; 我找不到任何描述这个问题的东西。


更新:有些人似乎认为“ $PSVersionTable ”(和/或它的各种属性)是一个答案。 最后我终于意识到这是一个PowerShellvariables(也许'PS'前缀应该已经给我,但它没有),并试图深入挖掘。 这导致了另一个问题: PowerShell的$ PSVersionTable的内容代表什么? 。

Update2:根据我现在收集的所有信息和我的更好的理解,我相当肯定PowerShell的内置variables$PSVersionTable.PSVersion在技​​术上不是这个的答案,但是它通常是(有时候总是?不知道)相同,因为在版本可能会携手共进。 $PSVersionTable.WSManStackVersionvariables可能是我想要的,但该属性的官方简短描述显示它代表WSpipe理堆栈。 WS-Management堆栈与WMF是一样的吗? 谷歌search表明他们是密切相关的,但我不确定是否答案是肯定的。

请参阅Microsoft的此文档:

https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-windows-powershell?view=powershell-5.1

在“升级现有的Windows Powershell”部分中,具体说明如下:

PowerShell的安装包进入WMF安装程序。 WMF安装程序的版本与PowerShell的版本相匹配 ; Windows PowerShell没有独立的安装程序。

我认为这是答案的家伙。 运行$PSVersionTable.PSVersion来获取版本。

我知道这是一个老问题,但是对于Googlesearch中find的其他人来说:

我想争辩说$PSVersionTable.PSVersion是WMF版本的最可靠的指标。 看下面的例子。

Windows 7全新安装:

 Name Value ---- ----- PSVersion 2.0 WSManStackVersion 2.0 CLRVersion 2.0.50727.5420 BuildVersion 6.1.7601.17514 PSCompatibleVersions {1.0, 2.0} SerializationVersion 1.1.0.1 PSRemotingProtocolVersion 2.1 

.NET 4.5和WMF 4安装后的Windows 7:

 Name Value ---- ----- PSVersion 4.0 WSManStackVersion 3.0 SerializationVersion 1.1.0.1 CLRVersion 4.0.30319.18408 BuildVersion 6.3.9600.16406 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0} PSRemotingProtocolVersion 2.2 

WMF 5安装后的Windows 7:

 Name Value ---- ----- PSVersion 5.0.10586.117 WSManStackVersion 3.0 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.10586.117 CLRVersion 4.0.30319.18408 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1 

Windows 10,其中包括WMF 5开箱即用:

 Name Value ---- ----- PSVersion 5.0.10586.122 WSManStackVersion 3.0 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.10586.122 CLRVersion 4.0.30319.42000 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1 

所以,你可以看到, $PSVersionTable.WSManStackVersion.Major的版本似乎只是在WMF 4安装中更改,然后保持在3.而$PSVersionTable.PSVersion.Major似乎报告了WMF的准确版本。

在PowerShell中,它可以从$PSVersionTable.WSManStackVersion.Major

我家的Windows 7系统:

 PS C:\Users\Brian> $PSVersionTable Name Value ---- ----- CLRVersion 2.0.50727.5485 BuildVersion 6.1.7601.17514 PSVersion 2.0 WSManStackVersion 2.0 PSCompatibleVersions {1.0, 2.0} SerializationVersion 1.1.0.1 PSRemotingProtocolVersion 2.1 PS C:\Users\Brian> $PSVersionTable.WSManStackVersion.Major 2 PS C:\Users\Brian> 

然后在安装更新的Windows Management Framework之后:

 PS C:\Users\Brian> $PSVersionTable Name Value ---- ----- PSVersion 4.0 WSManStackVersion 3.0 SerializationVersion 1.1.0.1 CLRVersion 4.0.30319.34209 BuildVersion 6.3.9600.16406 PSCompatibleVersions {1.0, 2.0, 3.0, 4.0} PSRemotingProtocolVersion 2.2 PS C:\Users\Brian> 

如果安装了,你会在“appwiz.cpl”find它。 只要记得在“查看已安装的更新”下查看,因为WMF是作为Windows更新发布的,具有不同Windows版本的唯一KB编号。

在Windows 7 SP 1下安装WMF 3.0

通过确定要检查的版本的KB编号,然后使用(在本例中为wmic查询)确定是否已安装KB编号,检查是否安装了Windows Management Framework(WMF)的哪个版本。 这些例子都是基于使用cmd.exe来运行命令的。

**命令来检查WMF 4.0

 wmic qfe get hotfixid | find "KB2819745" echo %ERRORLEVEL% 

**运行命令的示例:

 C:\Program Files\Tivoli\TSM\baclient> wmic qfe get hotfixid | find "KB2819745" KB2819745 C:\Program Files\Tivoli\TSM\baclient> echo %ERRORLEVEL% 0 

在上面的例子中安装了WMF 4.0:KB从wmic查询返回并返回一个零代码。

**命令来检查WMF 5.0

 wmic qfe get hotfixid | find "KB3134760" echo %ERRORLEVEL% 

**运行命令的示例:

 C:\Program Files\Tivoli\TSM\baclient> wmic qfe get hotfixid | find "KB3134760" C:\Program Files\Tivoli\TSM\baclient> echo %ERRORLEVEL% 1 

所以在上面的例子中,没有安装WMF 5.0:wmic查询没有返回任何结果,并且返回的代码是非零的。

您可能使用了不同的KB来安装给定的WMF级别,但这些正是我目前正在使用的。

我经常检查PowerShell(安装或升级为WMF的一部分):

 powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -Command "Write-Host $PSVersionTable.PSVersion" echo %ERRORLEVEL% 

如果未安装.NET 4.5,则升级到WMF 4.0(以及后来的5.0)时会出现问题,因此如果PS命令输出错误,则应该安装.NET 4.5。