Назад | Перейти на главную страницу

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

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

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

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

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

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

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


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

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

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

Я знаю, что это старый вопрос, но для тех, кто нашел его в поиске 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

Итак, как видите, версия для $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». Просто не забудьте заглянуть в раздел «Просмотр установленных обновлений», так как WMF распространяется как обновление Windows с уникальными номерами KB для разных версий Windows.

Вы проверяете, какая версия 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%

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