Как проверить, какая версия 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:
В разделе «Обновление существующей 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.