Jaka wersja systemu Windows Management Framework jest zainstalowana?

16

Jak sprawdzić, aby sprawdzić, która wersja Windows Management Framework (WMF) jest zainstalowana? Wydaje się, że powinno to być proste, ale nie mogę. Nawet Googling, kilka różnych wersji pytania, okazuje się niewiele do zera.

Nie ma go w appwiz.cpl, a regedit nie znajduje niczego dla „Windows Management Framework” i znajduje zbyt wiele obcych rzeczy dla „wmf”

Chcę tylko wiedzieć, jak to sprawdzić, w jakikolwiek rozsądny sposób. Czy istnieje dla niego klucz rejestru? Czy jest plik, który mogę sprawdzić? Byle co???

Najbliższa rzecz, jaką mogłem znaleźć, to błąd serwera: Metody wykrywania wersji systemu Windows Management Framework . To pytanie zaczyna się tak samo, ale wydaje się, że wymaga określonego sposobu sprawdzania, który będzie stosowany w GPO; być może dlatego nie otrzymał odpowiedzi.

Jest wiele komputerów, na których chcę to sprawdzić. Zaczynam od systemu Windows Server 2008 R2 Standard. Będą też inne systemy operacyjne Windows Server.

Jeśli znasz jakieś tagi, które działają lepiej niż to, co mam, skomentuj lub przeprowadź ponownie tag; Nie mogłem znaleźć niczego, co dobrze opisałoby to pytanie.


Aktualizacja: Niektórzy ludzie myślą, że „ $PSVersionTable” (i / lub różne jego właściwości) jest odpowiedzią. W końcu ostatnio zdałem sobie sprawę, że jest to zmienna PowerShell (może prefiks „PS” powinien był mi ją dać, ale nie zrobił) i spróbowałem głębiej kopać. To spowodowało kolejne pytanie: co reprezentuje zawartość $ PSVersionTable programu PowerShell? .

Aktualizacja 2: W oparciu o wszystkie informacje, które zebrałem teraz i moje lepsze zrozumienie, jestem całkiem pewien, że wbudowana zmienna PowerShell $PSVersionTable.PSVersionnie jest technicznie odpowiedzią na to, ale że często (czasami? Zawsze? Nie jestem pewien) tak samo, jak w wersjach może iść ręka w rękę. $PSVersionTable.WSManStackVersionZmienna może być to, co chcę, ale oficjalna krótki opis, który pokazuje jak to własności stanowiących stosu WS-Management. Czy stos WS-Management jest tym samym co WMF? Googling sugeruje, że są blisko spokrewnieni, ale nie jestem pewien, czy odpowiedź na to pytanie brzmi „tak”.

Loduwijk
źródło
1
Możliwy duplikat: serverfault.com/questions/555100/… Odpowiedź znajduje się w komentarzach, mimo że nie ma jeszcze akceptowanej odpowiedzi.
Wesley
@Wesley Już podałem link do tego pytania i wspomniałem o nim. Odpowiedź nie znajduje się w komentarzach. „Pytasz, jak uruchomić coś takiego, $PSVersionTable.PSVersionale używając WMI?” nie jest odpowiedzią. Co to w ogóle znaczy? Jeśli mógłbyś wziąć ten komentarz i zamienić go w odpowiedź, która jest rzeczywiście użyteczna, byłbym wdzięczny. Czy to jest $PSVersionTable.PSVersionjakaś zmienna, która jest gdzieś dostępna? Jeśli tak, czy jest to wersja WMF? Próbowałem echo $PSVersionTable.PSVersioni dostałem wyjście$PSVersionTable.PSVersion
Loduwijk
To samo dotyczy podobnych komentarzy do tego pytania.
Loduwijk,
1
Prawdopodobnie zostałeś pochwalony za to, że pobiegłeś echo $PSVersionTable.PSVersioni uzyskałeś wynik $PSVersionTable.PSVersion- czym się mylisz w moim komentarzu / odpowiedzi na inne pytanie?
TheCleaner
1
Powiedzenie „Zrobiłem to i dostałem ten wynik” nigdy nie powinno przynieść negatywnego wyniku. To sugeruje, że przegłosujesz, ponieważ uważasz, że dana osoba jest głupia. To był tylko przykład jednego ze sposobów, w jaki próbowałem wykorzystać rzekomą „odpowiedź”. Komentarze do tej zmiennej podały niektóre dane, ale nie były użyteczne. Nie wiedziałem, że jest to zmienna w PowerShell i nikt nie powiedział, że tak jest - najbliższą rzeczą było to, że kilka osób wspomniało o sprawdzeniu wersji PowerShell, czego nie szukałem.
Loduwijk,

Odpowiedzi:

10

Zobacz tę dokumentację od Microsoft:

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

W sekcji „Uaktualnianie istniejącego programu Windows Powershell” jest napisane w szczególności:

Pakiet instalacyjny programu PowerShell znajduje się w instalatorze WMF. Wersja instalatora WMF jest zgodna z wersją programu PowerShell ; nie ma samodzielnego instalatora dla Windows PowerShell.

Myślę, że to jest odpowiedź chłopaki. Uruchom, $PSVersionTable.PSVersionaby uzyskać wersję.

DoodlingDBA
źródło
Wreszcie ostateczna, autorytatywna odpowiedź prosto od Microsoft. Dziękuję Ci. Zaakceptowano i +1.
Loduwijk
10

Wiem, że to stare pytanie, ale dla innych osób, które znajdują to w wyszukiwarce Google:

Chciałbym argumentować, że $PSVersionTable.PSVersionjest to najbardziej niezawodny wskaźnik wersji WMF. Zobacz poniższe przykłady.

Świeża instalacja systemu 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 po instalacji .NET 4.5 i 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 po instalacji 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, który zawiera WMF 5 po wyjęciu z pudełka:

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

Jak widać, $PSVersionTable.WSManStackVersion.Majorwydaje się , że wersja for zmienia się tylko w instalacji WMF 4, a następnie pozostaje na poziomie 3. $PSVersionTable.PSVersion.MajorWydaje się, że podaje dokładną wersję WMF.

Mikrofon
źródło
Powiem ci, jaki byłby najbardziej niezawodny wskaźnik. Znajdź domyślny plik WMF dla każdej wersji systemu Windows i jakie numery KB są używane dla każdej struktury zarządzania Windows, a następnie sprawdź te wersje / KB i wykonaj dużą instrukcję. To znaczy, prawdopodobnie PSVersion jest wystarczająco dobry, ale jak już wspomniano, nie wiemy o tym. A przynajmniej tego nie wiem. Ale mogę powiedzieć na pewno, że jeśli masz KB i wersję systemu operacyjnego, będziesz wiedział, co WMF został zainstalowany. (Cofając się jednak, jestem ciekawy, dlaczego trzeba wiedzieć, że wersja WMF i PSVersion nie byłyby wystarczające.)
Todd Walton
To powinna być zaakceptowana odpowiedź. Chociaż znalezienie wszystkich KB umożliwiłoby wyczerpującą odpowiedź, ta odpowiedź jest rozsądnym podejściem, które mogę potwierdzić w co najmniej jednej wersji systemu Windows (2012 R2).
RichVel
@ToddWalton Nie pamiętam, dlaczego potrzebowałem wersji WMF w tym czasie. Pamiętam tylko, że coś, co robiłem, miało warunek wstępny, że zainstalowano określoną wersję WMF, a nie PowerShell. Nie pamiętam jednak, co to było, więc być może wykorzystano PowerShell. Jednak nie jestem w tej pracy od około 2 lat, więc moja pamięć o tym zadaniu jest szwajcarska.
Loduwijk
@RichVel Miałeś rację, ta odpowiedź powinna być zaakceptowana. Nie jestem pewien, dlaczego nigdy nie zmieniłem znacznika na ten. W tym momencie jednak udzielono ostatnio ostatecznej, autorytatywnej odpowiedzi, więc zamiast tego ją zaakceptowałem. Przykro mi Mike'owi, że jego odpowiedź nie została sprawdzona przez ostatni rok.
Loduwijk
3

W PowerShell jest dostępny z $PSVersionTable.WSManStackVersion.Major

Mój domowy system 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>

Następnie po zainstalowaniu nowszej struktury zarządzania 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>
Brian
źródło
1
Uważam, że to jest nieprawidłowe. Właśnie zainstalowałem WMF 5.1 w systemie Windows Server 2012 R2, w którym WSManStackVersionpierwotnie był 3.0, i pozostał na 3.0. Myślę, że najlepszym przewodnikiem są dwa pierwsze komponenty, PSVersionktóre będą takie same jak wersja WMF.
RichVel
0

Jeśli jest zainstalowany, znajdziesz go w „appwiz.cpl”. Pamiętaj tylko, aby zajrzeć do „Wyświetl zainstalowane aktualizacje”, ponieważ WMF jest rozpowszechniany jako aktualizacja systemu Windows z unikalnymi numerami KB dla różnych wersji systemu Windows.

WMF 3.0 zainstalowany pod Windows 7 SP 1

Håvid Falch
źródło
0

Sprawdzasz, która wersja Windows Management Framework (WMF) jest zainstalowana, identyfikując numer KB wersji, którą sprawdzasz, a następnie za pomocą, w tym przypadku, zapytania wmic, aby ustalić, czy ten numer KB został zainstalowany. Wszystkie te przykłady oparte są na użyciu cmd.exe do uruchomienia poleceń.

** Polecenia sprawdzenia WMF 4.0

wmic qfe get hotfixid | find "KB2819745"
echo %ERRORLEVEL%

** Przykład uruchamiania poleceń:

C:\Program Files\Tivoli\TSM\baclient> wmic qfe get hotfixid | find "KB2819745"
KB2819745

C:\Program Files\Tivoli\TSM\baclient> echo %ERRORLEVEL%
0

W powyższym przykładzie zainstalowano WMF 4.0: KB jest zwracany z zapytania wmic i zerowego kodu powrotu.

** Polecenia sprawdzenia WMF 5.0

wmic qfe get hotfixid | find "KB3134760"
echo %ERRORLEVEL%

** Przykład uruchamiania poleceń:

C:\Program Files\Tivoli\TSM\baclient> wmic qfe get hotfixid | find "KB3134760"
C:\Program Files\Tivoli\TSM\baclient> echo %ERRORLEVEL%
1

W powyższym przykładzie WMF 5.0 nie jest zainstalowany: nic nie zwróciło z zapytania WMIC i niezerowy kod powrotu.

Możliwe, że użyłeś innej KB do zainstalowania danego poziomu WMF, ale obecnie nad nimi pracuję.

I zawsze sprawdzam PowerShell (który jest zainstalowany lub uaktualniony jako część WMF):

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

Podczas aktualizacji do WMF 4.0 (i ponownie później do 5.0) występują problemy, jeśli .NET 4.5 nie jest zainstalowany, więc jeśli polecenie PS generuje błąd, prawdopodobnie powinieneś zainstalować .NET 4.5.

Stef
źródło