Какая версия Windows Management Framework установлена?

16

Как проверить, какая версия Windows Management Framework (WMF) установлена? Кажется, это должно быть легко узнать, но я не могу. Даже поиск в Google множества разных версий вопроса мало что дает.

Его нет в appwiz.cpl, и regedit ничего не находит для «Windows Management Framework» и находит слишком много посторонних для «wmf»

Я просто хочу знать, как это проверить, любым разумным способом. Для этого есть ключ реестра? Есть ли файл, который я могу проверить? Что-нибудь???

Самая близкая вещь, которую я смог найти, была здесь о сбое сервера: Методы обнаружения версии Windows Management Framework . Этот вопрос начинается с того же, но, похоже, он требует особого способа проверки для использования в объекте групповой политики; возможно, именно поэтому он не получил ответов.

Есть несколько компьютеров, на которых я хочу это проверить. Я начинаю с Windows Server 2008 R2 Standard. Будут и другие операционные системы Windows Server.

Если вам известны какие-либо теги, которые работают лучше, чем у меня, пожалуйста, прокомментируйте или сделайте метку; Я не мог найти ничего, что хорошо описывало бы этот вопрос.


Обновление: некоторые люди думают, что " $PSVersionTable" (и / или различные его свойства) является ответом. Недавно я наконец понял, что это переменная PowerShell (возможно, префикс 'PS' должен был дать ее мне, но это не так) и попытался копать глубже. Это привело к другому вопросу: что представляет собой содержимое PowerShell $ PSVersionTable? ,

Обновление 2: Исходя из всей информации, которую я собрал сейчас, и моего лучшего понимания, я вполне уверен, что встроенная переменная PowerShell $PSVersionTable.PSVersionтехнически не является ответом на это, но часто (иногда «всегда» не уверен) То же, что и в версиях, может идти рука об руку. $PSVersionTable.WSManStackVersionПеременная может быть то , что я хочу, но официальное краткое описание того, что свойство показывает , что как представление стека WS-Management. Стек WS-Management - это то же самое, что и WMF? Гугл предполагает, что они тесно связаны, но я не уверен, что ответ «да».

Loduwijk
источник
1
Возможное дублирование : serverfault.com/questions/555100/… Ответ есть в комментариях, хотя еще нет принятого ответа.
Уэсли
@ Уэсли Я уже предоставил ссылку на этот вопрос и упомянул ее. Ответ не в комментариях. "Вы спрашиваете, как запустить что-то вроде, $PSVersionTable.PSVersionно с помощью WMI?" это не ответ. Что это вообще значит? Если бы вы могли взять этот комментарий и превратить его в действительно полезный ответ, я был бы признателен за это. Это $PSVersionTable.PSVersionпеременная какого-то типа, которая доступна где-то? Если да, гарантированно ли будет версия WMF? Я попытался echo $PSVersionTable.PSVersionи получил вывод$PSVersionTable.PSVersion
Loduwijk
Кроме того, то же самое касается аналогичных комментариев по этому вопросу.
Loduwijk
1
Вы, вероятно, были опровергнуты за то, что сказали, что вы побежали echo $PSVersionTable.PSVersionи получили вывод $PSVersionTable.PSVersion- чем вас смущает мой комментарий / ответ на другой вопрос?
TheCleaner
1
Сказать «я сделал это и получил этот результат» никогда не должно приводить к снижению. Это намекает на то, что вы голосуете, потому что думаете, что этот человек глуп. Это был просто пример того, как я пытался использовать предполагаемый «ответ». Комментарии к этой переменной дали некоторые данные, но не помогли использовать их. Я не знал, что это переменная в PowerShell, и никто не сказал, что это так. Самое близкое было то, что пара людей тоже упомянула проверку версии PowerShell, чего я не искал.
Loduwijk

Ответы:

9

Смотрите эту документацию от 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чтобы получить версию.

DoodlingDBA
источник
Наконец, окончательный, авторитетный ответ прямо из Microsoft. Спасибо. Принято и +1.
Лодувийк
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

Windows 7 после установки .NET 4.5 и WMF 4:

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

Windows 7 после установки WMF 5:

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

Итак, как вы можете видеть, версия for $PSVersionTable.WSManStackVersion.Majorтолько изменяется при установке WMF 4, а затем остается на 3. Хотя, $PSVersionTable.PSVersion.Majorкажется, сообщает точную версию WMF.

Майк
источник
Я скажу вам, какой будет самый надежный индикатор. Найдите WMF по умолчанию для каждой версии Windows и какие номера КБ используются для каждой платформы управления Windows, а затем проверьте эти версии / КБ и сделайте большой регистр. Я имею в виду, вероятно, PSVersion достаточно хорош, но, как было указано, мы этого не знаем. Или, по крайней мере, я этого не знаю. Но я могу точно сказать, что если бы у вас были КБ и версия ОС, вы бы знали, какой WMF был установлен. (Делая шаг назад, мне любопытно, почему нужно знать версию WMF, а PSVersion будет недостаточно.)
Тодд Уолтон,
Это должен быть принятый ответ. Хотя нахождение всех КБ позволило бы получить исчерпывающий ответ, этот ответ является разумным подходом, который я могу подтвердить по крайней мере в одной версии Windows (2012 R2).
RichVel
@ToddWalton Я не помню подробностей о том, зачем мне тогда была нужна версия WMF. Все, что я помню, это то, что у меня было условие, чтобы была установлена ​​конкретная версия WMF, а не PowerShell. Я не помню, что это было, поэтому, возможно, это было то, что использовало PowerShell. Я даже не был на этой работе около 2 лет, так что моя память об этой задаче швейцарская сырная.
Лодувийк
@RichVel Вы были правы, этот ответ должен был быть принятым. Не уверен, почему я никогда не переключал эту галочку. На данный момент, однако, недавно был дан действительно окончательный, авторитетный ответ, поэтому я принял его вместо этого. Извините Майка, что его ответ не был проверен за последний год.
Лодувийк
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 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>
Брайан
источник
1
Я считаю, что это неправильно. Я только что установил WMF 5.1 в системе Windows Server 2012 R2, в которой WSManStackVersionизначально была 3.0, и она осталась на уровне 3.0. Я думаю, что лучшее руководство - это первые два компонента, PSVersionкоторые будут такими же, как версия WMF.
RichVel
0

Если он установлен, вы найдете его в "appwiz.cpl". Просто не забудьте заглянуть в «Просмотр установленных обновлений», так как WMF распространяется как обновление Windows с уникальными номерами КБ для разных версий Windows.

WMF 3.0 установлен под Windows 7 SP 1

Хавид Фальх
источник
0

Вы проверяете, какая версия Windows Management Framework (WMF) установлена, определяя номер КБ версии, которую вы проверяете, и затем используя, в данном случае, wmic-запрос, чтобы определить, установлен ли этот номер КБ. Все эти примеры основаны на использовании 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 и нулевого кода возврата.

** Команды для проверки на 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 и ненулевой код возврата.

Возможно, что вы использовали другой КБ для установки данного уровня WMF, но это то, с чем я сейчас работаю.

И я всегда проверяю PowerShell (который устанавливается или обновляется как часть WMF):

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

Существуют проблемы при обновлении до WMF 4.0 (и снова позже до 5.0), если .NET 4.5 не установлен, поэтому, если команда PS выдает ошибку, вам, вероятно, следует установить .NET 4.5.

Stef
источник