如何检查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.WSManStackVersion
variables可能是我想要的,但该属性的官方简短描述显示它代表WSpipe理堆栈。 WS-Management堆栈与WMF是一样的吗? 谷歌search表明他们是密切相关的,但我不确定是否答案是肯定的。
请参阅Microsoft的此文档:
在“升级现有的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编号。
通过确定要检查的版本的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。