安装了什么版本的Windows管理框架?


16

如何检查以查看安装了哪个版本的Windows Management Framework(WMF)?看起来应该很简单,但是我不能。甚至对一系列不同版本的问题进行谷歌搜索也几乎没有。

它不在appwiz.cpl中,regedit在“ Windows Management Framework”中找不到任何内容,并且在“ wmf”中找不到太多无关紧要的内容

我只是想知道如何以任何合理的方式检查它。是否有注册表项?有没有我可以检查的文件?有什么吗?

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

我想检查多台计算机。我首先使用的是Windows Server 2008 R2 Standard。也将有其他Windows Server操作系统。

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


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

Update2:基于我现在收集的所有信息以及我更好的理解,我可以肯定PowerShell的内置变量$PSVersionTable.PSVersion在技​​术上并不是解决问题的办法,而是经常(有时?总是?不确定)。相同,因为版本可能并存。该$PSVersionTable.WSManStackVersion变量可能是我想要的,但是该属性的官方简短描述将其表示为WS-Management堆栈。WS-Management堆栈与WMF是否相同?谷歌搜索表明它们密切相关,但是我不确定答案是否定的。


1
可能是重复的:serverfault.com/questions/555100/…即使没有接受的答案,答案仍在注释中。
Wesley

@Wesley我已经提供了该问题的链接并提到了它。答案不在评论中。“您是在问如何$PSVersionTable.PSVersion使用WMI 来运行类似的东西吗?” 不是答案。那有什么意思?如果您能接受该评论并将其转化为实际可用的答案,我将不胜感激。这$PSVersionTable.PSVersion是某处可用的某种类型的变量吗?如果是,是否保证是WMF版本?我尝试过echo $PSVersionTable.PSVersion并得到$PSVersionTable.PSVersion
Loduwijk 2014年

同样,对该问题的类似评论也是如此。
Loduwijk 2014年

1
您可能因为说自己已经跑步echo $PSVersionTable.PSVersion并获得了$PSVersionTable.PSVersion- 的结果而被否决了-您对我对另一个问题的评论/答案感到困惑吗?
TheCleaner 2014年

1
说“我做到了,并得到了这个结果”永远不会让人失望。这暗示着你在投票,因为你认为那个人很愚蠢。这只是我尝试利用所谓的“答案”的一种方式的示例。带有该变量的注释提供了一些数据,但是没有使用它的有用方法。我不知道它是PowerShell中的一个变量,没有人说它是-最接近的是,几个人也提到过检查PowerShell版本,这不是我想要的。
Loduwijk 2014年

Answers:


9

请参阅Microsoft的以下文档:

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

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

PowerShell的安装包位于WMF安装程序中。WMF安装程序的版本与PowerShell的版本匹配;没有适用于Windows PowerShell的独立安装程序。

我认为这是答案。运行$PSVersionTable.PSVersion以获取版本。


最后,直接来自Microsoft的权威性权威性答案。谢谢。已接受,并+1。
Loduwijk

10

我知道这是一个老问题,但对于其他从Google搜索中找到的人来说:

我想说这$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.MajorWMF 4的安装版本似乎只有更改,然后保持在3。而WMF 4的$PSVersionTable.PSVersion.Major报告似乎是准确的版本。


我将告诉您最可靠的指标是什么。查找每个Windows版本的默认WMF,以及每个Windows管理框架使用的KB号,然后检查这些版本/ KB并做大写声明。我的意思是,PSVersion可能已经足够好了,但是正如已经指出的那样,我们并不知道。或者,至少我不知道。但是我可以肯定地告诉您,如果您拥有KB和操作系统版本,您将知道已安装了什么WMF。(不过,退后一步,我很好奇为什么要知道WMF版本和PSVersion不够。)
Todd Walton

这应该是公认的答案。虽然找到所有知识库将提供详尽的答案,但是我可以在至少一个Windows版本(2012 R2)上确认这一答案是一种合理的方法。
RichVel

@ToddWalton我不记得当时为什么需要WMF版本的细节。我只记得我正在做的事情有先决条件,即必须安装特定版本的WMF,而不是PowerShell。我不记得那是什么,所以也许是使用PowerShell的东西。不过,我至今大约两年都没有从事这项工作,所以我对这项工作的记忆是瑞士奶酪。
Loduwijk

@RichVel你是对的,那个答案应该已经被接受了。不知道为什么我从来没有将复选标记切换到那个。不过,到现在为止,最近已经提供了一个实际上权威的答案,因此我已经接受了那个答案。对不起,迈克(Mike)去年没有检查他的答案。
Loduwijk

3

在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管理框架之后:

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>

1
我相信这是不正确的。我刚刚在Windows Server 2012 R2系统上安装了WMF 5.1,该系统WSManStackVersion最初是3.0,现在仍为3.0。我认为最好的指南是前两个组件,PSVersion它们与WMF版本相同。
RichVel

0

如果已安装,则可以在“ appwiz.cpl”中找到它。只需记住要在“查看已安装的更新”下查看,因为WMF是作为Windows更新分发的,具有针对不同Windows版本的唯一KB编号。

Windows 7 SP 1下安装的WMF 3.0


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:从wmic查询返回KB,返回码为零。

**检查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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.