Welche Version von Windows Management Framework ist installiert?

16

Wie können Sie überprüfen, welche Version von Windows Management Framework (WMF) installiert ist? Es scheint, als ob es eine einfache Sache sein sollte, es herauszufinden, aber ich kann es nicht. Sogar das Googeln einer Reihe verschiedener Versionen der Frage ergibt wenig bis gar nichts.

Es ist nicht in appwiz.cpl und regedit findet nichts für "Windows Management Framework" und findet zu viel fremdes Zeug für "wmf"

Ich möchte nur wissen, wie ich es überhaupt überprüfen kann, auf eine vernünftige Weise. Gibt es einen Registrierungsschlüssel dafür? Gibt es eine Datei, die ich überprüfen kann? Etwas???

Das nächste, was ich finden konnte, war hier bei Serverfehler: Methoden zum Erkennen der Version von Windows Management Framework . Diese Frage beginnt mit der gleichen Frage, scheint jedoch nach einer bestimmten Art der Überprüfung in einem Gruppenrichtlinienobjekt zu fragen. Vielleicht bekam es deshalb keine Antworten.

Es gibt mehrere Computer, auf denen ich dies überprüfen möchte. Ich beginne mit Windows Server 2008 R2 Standard. Es wird auch andere Windows Server-Betriebssysteme geben.

Wenn Sie Tags kennen, die besser funktionieren als ich, kommentieren Sie sie bitte oder markieren Sie sie erneut. Ich konnte nichts finden, das diese Frage gut beschrieb.


Update: Einige Leute scheinen zu denken, dass " $PSVersionTable" (und / oder verschiedene Eigenschaften davon) eine Antwort sind. Vor kurzem habe ich endlich gemerkt, dass dies eine PowerShell-Variable ist (vielleicht hätte das Präfix 'PS' sie mir verraten sollen, aber nicht) und versucht, tiefer zu graben. Dies führte zu einer weiteren Frage: Was bedeuten die Inhalte von PowerShells $ PSVersionTable? .

Update 2: Nach all den Informationen, die ich jetzt gesammelt habe und die ich besser verstehe, bin ich mir ziemlich sicher, dass die integrierte Variable von PowerShell $PSVersionTable.PSVersiontechnisch nicht die Antwort darauf ist, aber dass sie häufig (manchmal? Immer? Nicht sicher) ist das gleiche, wie in den versionen könnte hand in hand gehen. Die $PSVersionTable.WSManStackVersionVariable könnte das sein, was ich will, aber die offizielle Kurzbeschreibung dieser Eigenschaft zeigt, dass sie den WS-Management-Stack darstellt. Ist der WS-Management-Stack dasselbe wie WMF? Googeln legt nahe, dass sie eng miteinander verwandt sind, aber ich bin nicht sicher, ob die Antwort darauf Ja lautet.

Loduwijk
quelle
1
Mögliche Täuschung von: serverfault.com/questions/555100/… Die Antwort befindet sich in den Kommentaren, obwohl es noch keine akzeptierte Antwort gibt.
Wesley
@Wesley Ich habe bereits einen Link zu dieser Frage angegeben und erwähnt. Die Antwort ist nicht in den Kommentaren. "Fragen Sie sich, wie Sie etwas ausführen sollen, $PSVersionTable.PSVersionohne WMI zu verwenden?" ist keine Antwort. Was bedeutet das überhaupt? Wenn Sie diesen Kommentar in eine tatsächlich verwendbare Antwort umwandeln könnten, wäre ich Ihnen dankbar. Handelt es sich um $PSVersionTable.PSVersioneine Variable, die irgendwo verfügbar ist? Wenn ja, handelt es sich garantiert um die WMF-Version? Ich versuchte echo $PSVersionTable.PSVersionund bekam eine Ausgabe von$PSVersionTable.PSVersion
Loduwijk
Gleiches gilt auch für die ähnlichen Kommentare zu dieser Frage.
Loduwijk
1
Du wurdest wahrscheinlich dafür abgelehnt, dass du gelaufen bist echo $PSVersionTable.PSVersionund hast eine Ausgabe von $PSVersionTable.PSVersion- was verwirrt dich in meinem Kommentar / meiner Antwort auf die andere Frage?
TheCleaner
1
Das Sagen von "Ich habe dies getan und habe dieses Ergebnis erhalten" sollte niemals zu einer Ablehnung führen. Das bedeutet, dass Sie abstimmen, weil Sie die Person für dumm halten. Das war nur ein Beispiel dafür, wie ich versucht habe, die angebliche "Antwort" zu nutzen. Die Kommentare mit dieser Variablen gaben einige Daten an, aber keine nützliche Möglichkeit, sie zu verwenden. Ich wusste nicht, dass es sich um eine Variable in PowerShell handelt, und niemand sagte, dass dies der Fall ist - das Nächste war, dass ein paar Leute erwähnt haben, dass sie auch die PowerShell-Version überprüft haben, wonach ich nicht gesucht habe.
Loduwijk

Antworten:

9

Siehe diese Dokumentation von Microsoft:

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

Im Abschnitt "Aktualisieren von vorhandenem Windows Powershell" heißt es speziell:

Das Installationspaket für PowerShell befindet sich in einem WMF-Installationsprogramm. Die Version des WMF-Installationsprogramms stimmt mit der Version von PowerShell überein . Für Windows PowerShell gibt es kein eigenständiges Installationsprogramm.

Ich denke, das ist die Antwort, Leute. Führen Sie aus $PSVersionTable.PSVersion, um die Version abzurufen.

DoodlingDBA
quelle
Endlich eine endgültige, verbindliche Antwort direkt von Microsoft. Vielen Dank. Akzeptiert und +1.
Loduwijk
10

Ich weiß, dass dies eine alte Frage ist, aber für andere, die dies über eine Google-Suche finden:

Ich möchte argumentieren, dass dies $PSVersionTable.PSVersionder zuverlässigste Indikator für die Version von WMF ist. Beispiele siehe unten.

Neuinstallation von 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 nach der Installation von .NET 4.5 und 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 nach der WMF 5-Installation:

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, das WMF 5 im Lieferumfang enthält:

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

Wie Sie sehen können, $PSVersionTable.WSManStackVersion.Majorscheint sich die Version von nur bei der WMF 4-Installation zu ändern und bleibt dann bei 3. Während $PSVersionTable.PSVersion.Majordie genaue Version von WMF zu melden scheint.

Mike
quelle
Ich sage Ihnen, was der zuverlässigste Indikator wäre. Suchen Sie die Standard-WMF für jede Windows-Version und die für jedes Windows Management Framework verwendeten KB-Nummern. Suchen Sie dann nach diesen Versionen / KBs und führen Sie eine Groß- / Kleinschreibung aus. Ich meine, wahrscheinlich ist PSVersion gut genug, aber wie bereits erwähnt, wissen wir das nicht. Oder zumindest weiß ich das nicht. Aber ich kann Ihnen sicher sagen, wenn Sie die KBs und die OS-Version hätten, würden Sie wissen, welche WMF installiert wurde. (Einen Schritt zurück, ich bin neugierig, warum man WMF-Version wissen muss und PSVersion nicht ausreichen würde.)
Todd Walton
Dies sollte die akzeptierte Antwort sein. Das Auffinden aller KBs würde zwar eine erschöpfende Antwort ermöglichen, aber diese Antwort ist ein vernünftiger Ansatz, den ich für mindestens eine Windows-Version (2012 R2) bestätigen kann.
RichVel
@ToddWalton Ich weiß nicht mehr genau, warum ich damals die WMF-Version brauchte. Alles, woran ich mich erinnere, ist, dass etwas, das ich tat, eine Voraussetzung dafür war, dass eine bestimmte Version von WMF installiert war und nicht PowerShell. Ich erinnere mich nicht, was es war, also war es vielleicht etwas, das PowerShell verwendete. Ich bin aber seit ungefähr 2 Jahren nicht mehr bei diesem Job, deshalb ist meine Erinnerung an diese Aufgabe schweizerisch käsig.
Loduwijk
@ RichVel Du hattest Recht, diese Antwort hätte die akzeptierte sein sollen. Ich bin mir nicht sicher, warum ich das Häkchen nie darauf gesetzt habe. Zu diesem Zeitpunkt wurde jedoch kürzlich eine tatsächlich endgültige, maßgebliche Antwort gegeben, die ich stattdessen akzeptiert habe. Tut mir leid, Mike, dass seine Antwort im letzten Jahr nicht überprüft wurde.
Loduwijk
3

In PowerShell ist es von verfügbar $PSVersionTable.WSManStackVersion.Major

Mein Windows 7-Heimsystem:

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>

Dann nach der Installation eines neueren Windows Management Frameworks:

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
quelle
1
Ich glaube das ist falsch. Ich habe gerade WMF 5.1 auf einem Windows Server 2012 R2-System installiert, auf dem WSManStackVersiones ursprünglich 3.0 war, und es blieb bei 3.0. Ich denke, die beste Anleitung sind die ersten beiden Komponenten PSVersion, die mit der WMF-Version identisch sind.
RichVel
0

Wenn es installiert ist, finden Sie es in "appwiz.cpl". Denken Sie daran, unter "Installierte Updates anzeigen" nachzusehen, da die WMF als Windows-Update mit eindeutigen KB-Nummern für die verschiedenen Windows-Versionen verteilt wird.

WMF 3.0 installiert unter Windows 7 SP 1

Håvid Falch
quelle
0

Sie überprüfen, welche Version von Windows Management Framework (WMF) installiert ist, indem Sie die KB-Nummer der Version identifizieren, nach der Sie suchen, und in diesem Fall mithilfe einer wmic-Abfrage ermitteln, ob diese KB-Nummer installiert wurde. Diese Beispiele basieren alle auf der Verwendung von cmd.exe zum Ausführen der Befehle.

** Befehle zum Überprüfen auf WMF 4.0

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

** Beispiel für die Ausführung der Befehle:

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

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

Im obigen Beispiel ist WMF 4.0 installiert: Die KB wird von der WMIC-Abfrage und einem Null-Rückkehrcode zurückgegeben.

** Befehle zum Überprüfen auf WMF 5.0

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

** Beispiel für die Ausführung der Befehle:

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

Im obigen Beispiel ist also WMF 5.0 nicht installiert: Von der wmic-Abfrage wurde nichts zurückgegeben und der Rückkehrcode ist nicht Null.

Möglicherweise haben Sie eine andere KB verwendet, um ein bestimmtes WMF-Level zu installieren, aber mit diesen arbeite ich zurzeit.

Und ich überprüfe immer PowerShell (das als Teil von WMF installiert oder aktualisiert wird):

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

Beim Upgrade auf WMF 4.0 (und später erneut auf 5.0) treten Probleme auf, wenn .NET 4.5 nicht installiert ist. Wenn der PS-Befehl einen Fehler ausgibt, sollten Sie .NET 4.5 wahrscheinlich installieren.

Stef
quelle