Какая версия Windows Management Framework установлена?
Как вы проверяете, какая версия Windows Management Framework (WMF) установлена? Похоже, это должно быть простой вещи, чтобы узнать, но я не могу. Даже Googling куча разных версий вопроса почти ничего не получается.
Это не в appwiz.cpl, и regedit ничего не находит для «Windows Management Framework», и он находит слишком много посторонних вещей для «wmf»
Я просто хочу знать, как его вообще проверить, любым разумным способом. Есть ли для этого раздел реестра? Есть ли файл, который я могу проверить? Все, что ???
Самое близкое, что я мог найти, было здесь на сервере: Методы определения версии Windows Management Framework . Этот вопрос начинается с того же самого, но, похоже, он запрашивает конкретный способ проверки для использования в объекте групповой политики; возможно, поэтому у него нет ответов.
Есть несколько компьютеров, на которых я хочу проверить это. Я начинаю с Windows Server 2008 R2 Standard. Будут и другие операционные системы Windows Server.
Если вы знаете какие-либо теги, которые работают лучше, чем у меня, прокомментируйте или повторите попытку; Я не мог найти ничего, что хорошо описывает этот вопрос.
Обновление. Некоторые люди, похоже, считают, что «$PSVersionTable
» (и /или различные его свойства) является ответом. Недавно я понял, что это переменная PowerShell (возможно, префикс «PS» должен был отдать мне, но это не так) и попытался копать глубже. Это привело к еще одному вопросу: Что представляет содержимое PowerShell $ PSVersionTable? .
Update2: Основываясь на всей собранной мне информации и моем понимании, я уверен, что встроенная переменная PowerShell $PSVersionTable.PSVersion
не является технически ответом на это, но часто (иногда «всегда» не уверен) то же самое, что и в версиях, которые могут идти рука об руку. Переменная $PSVersionTable.WSManStackVersion
может быть тем, что я хочу, но официальное краткое описание этого свойства показывает ее как представляющую стек WS-Management. Является ли стек WS-Management тем же, что и WMF? Googling предполагает, что они тесно связаны, но я не уверен, что ответ на этот вопрос да.
5 ответов
См. эту документацию от 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:
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) установлена путем идентификации номера KB версии, которую вы проверяете, а затем используя в этом случае wmic-запрос, чтобы определить, был ли этот номер KB установлены. Все эти примеры основаны на использовании 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-запроса и ненулевого кода возврата.
Возможно, вы использовали другой КБ для установки заданного уровня 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.