Яку версію Windows Management Framework встановлено?


16

Як перевірити, яка версія версії 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 повинен був би віддати її мені, але вона цього не зробила) і спробувала копати глибше. Це спричинило ще одне питання: Що являє вміст $ PSVersionTable PowerShell? .

Update2: Виходячи з усієї інформації, яку я зібрав зараз, і мого кращого розуміння, я досить впевнений, що вбудована змінна PowerShell $PSVersionTable.PSVersionтехнічно не є відповіддю на це, але що це часто (іноді? Завжди? Не впевнений) те саме, що і у версіях може йти рука об руку. $PSVersionTable.WSManStackVersionЗмінна може бути те , що я хочу, але офіційне короткий опис того, що властивість показує , що як уявлення стека WS-Management. Чи стек WS-менеджменту те саме, що WMF? Гуглінг припускає, що вони тісно пов'язані, але я не впевнений, чи відповідь на це так.


1
Можливий перелік: serverfault.com/questions/555100/… Відповідь є в коментарях, хоча відповіді ще немає.
Веслі

@Wesley Я вже надав посилання на це питання і згадав його. Відповідь не в коментарях. "Ви запитуєте, як запустити щось на кшталт, $PSVersionTable.PSVersionале не використовувати WMI?" - це не відповідь. Що це навіть означає? Якщо ви могли б взяти цей коментар і перетворити його на відповідь, яка насправді корисна, я би вдячний. Це $PSVersionTable.PSVersionзмінна якогось типу, яка є десь доступною? Якщо так, чи гарантовано це версія WMF? Я спробував echo $PSVersionTable.PSVersionі отримав результат$PSVersionTable.PSVersion
Loduwijk

Також те саме стосується аналогічних коментарів до цього питання.
Loduwijk

1
Ви, мабуть, неприхильно сказали, що ви бігли echo $PSVersionTable.PSVersionі отримали висновок $PSVersionTable.PSVersion- що вас бентежить в моєму коментарі / відповіді на інше питання?
TheCleaner

1
Говорячи, що "я це зробив і отримав такий результат", ніколи не повинно бути результатом. Це натякає на те, що ти виступаєш за те, що ти вважаєш людину дурною. Це був лише приклад одного із способів, коли я намагався використати передбачуваний "відповідь". Зауваження з цією змінною дали деякі дані, але корисний спосіб їх використання. Я не знав, що це змінна в PowerShell, і ніхто не сказав, що це - найближче, що пара людей згадувала і про перевірку версії PowerShell, що я не шукав.
Loduwijk

Відповіді:


10

Дивіться цю документацію від Microsoft:

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

У розділі "Оновлення існуючої Powershell для Windows" зазначено конкретно:

Інсталяційний пакет 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

Встановлення 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.


Я розповім, який би був найнадійніший показник. Знайдіть WMF за замовчуванням для кожної версії Windows, а також, які номери KB використовуються для кожної системи управління Windows, а потім перевірте ці версії / KB та зробіть велику заяву. Я маю на увазі, ймовірно, PSVersion досить хороший, але, як було зазначено, ми цього не знаємо. Або, принаймні, я цього не знаю. Але я можу вам точно сказати, якби у вас були KB та версія ОС, ви б знали, що було встановлено WMF. (Хоча зробити крок назад, мені цікаво, чому потрібно знати версію WMF, і PSVersion буде недостатньо.)
Тодд Уолтон,

Це має бути прийнятою відповіддю. Хоча знаходження всіх КБ дозволило б отримати вичерпну відповідь, ця відповідь є розумним підходом, який я можу підтвердити хоча б в одній версії Windows (2012 R2).
RichVel

@ToddWalton Я не пам’ятаю конкретики того, для чого мені тоді потрібна версія WMF. Я пам'ятаю лише те, що щось, що я робив, було передумовою встановлення конкретної версії WMF, і це не PowerShell. Я не пам'ятаю, що це було, тому, можливо, це було щось, що використовувало PowerShell. Я навіть навіть не працював на цій роботі вже близько 2 років, тому моя пам'ять про це завдання - швейцарський чіз.
Loduwijk

@RichVel Ви мали рацію, ця відповідь повинна була бути прийнятою. Не впевнений, чому я ніколи не перемикав галочку на цю. На цей момент, проте, нещодавно була надана фактично остаточна, авторитетна відповідь, тож я прийняв її замість цього. Вибачте Майку, що його відповідь не перевіряли останній рік.
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
Я вважаю, що це неправильно. Щойно я встановив WMF 5.1 в системі Windows Server 2012 R2, на якій WSManStackVersionспочатку було 3.0, і він залишився на рівні 3.0. Я думаю, що найкращим керівництвом є перші два компоненти, PSVersionякі будуть відповідати версії WMF.
RichVel

0

Якщо він встановлений, ви знайдете його в "appwiz.cpl". Просто пам’ятайте, що дивіться у розділі «Переглянути встановлені оновлення», оскільки WMF поширюється як оновлення для Windows з унікальними KB-номерами для різних версій Windows.

WMF 3.0, встановлений під Windows 7 SP 1


0

Ви перевіряєте, яка версія версії 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.