Quelle version de Windows Management Framework est installée?

16

Comment vérifiez-vous quelle version de Windows Management Framework (WMF) est installée? Il semble que cela devrait être simple à découvrir, mais je ne peux pas. Même googler un tas de versions différentes de la question s'avère peu ou rien.

Ce n'est pas dans appwiz.cpl, et regedit ne trouve rien pour "Windows Management Framework" et il trouve trop de choses superflues pour "wmf"

Je veux juste savoir comment le vérifier, de manière raisonnable. Existe-t-il une clé de registre pour cela? Y a-t-il un fichier que je peux vérifier? N'importe quoi???

La chose la plus proche que j'ai pu trouver était ici sur serverfault: Méthodes pour détecter la version de Windows Management Framework . Cette question commence de la même façon, mais elle semble demander une méthode spécifique de vérification à utiliser dans un GPO; c'est peut-être pour cela qu'il n'a obtenu aucune réponse.

Il y a plusieurs ordinateurs sur lesquels je veux vérifier. Celui par lequel je commence est Windows Server 2008 R2 Standard. Il y aura également d'autres systèmes d'exploitation Windows Server.

Si vous connaissez des balises qui fonctionnent mieux que les miennes, veuillez commenter ou redéfinir; Je n'ai rien trouvé qui décrivait bien cette question.


Mise à jour: Certaines personnes semblent penser que " $PSVersionTable" (et / ou diverses propriétés de celui-ci) est une réponse. J'ai finalement réalisé récemment qu'il s'agissait d'une variable PowerShell (peut-être que le préfixe «PS» aurait dû le révéler pour moi, mais il ne l'a pas fait) et j'ai essayé de creuser plus profondément. Cela a entraîné une autre question: que représente le contenu de $ PSVersionTable de PowerShell? .

Update2: Sur la base de toutes les informations que j'ai rassemblées maintenant et de ma meilleure compréhension, je suis assez certain que la variable intégrée de PowerShell $PSVersionTable.PSVersionn'est pas techniquement la réponse à cela, mais que c'est souvent (parfois? Toujours? Pas sûr) la même, comme dans les versions pourraient aller de pair. La $PSVersionTable.WSManStackVersionvariable pourrait être ce que je veux, mais la courte description officielle de cette propriété la montre comme représentant la pile WS-Management. La pile WS-Management est-elle la même chose que WMF? La recherche sur Google suggère qu'ils sont étroitement liés, mais je ne sais pas si la réponse est oui.

Loduwijk
la source
1
Dupe possible de: serverfault.com/questions/555100/… La réponse est dans les commentaires même s'il n'y a pas encore de réponse acceptée.
Wesley
@Wesley J'ai déjà fourni un lien vers cette question et je l'ai mentionnée. La réponse ne se trouve pas dans les commentaires. "Demandez-vous comment exécuter quelque chose comme $PSVersionTable.PSVersionmais en utilisant WMI?" n'est pas une réponse. Qu'est ce que ça veut dire? Si vous pouviez prendre ce commentaire et le transformer en une réponse réellement utilisable, je l'apprécierais. Est-ce $PSVersionTable.PSVersionune variable d'un type qui est disponible quelque part? Si oui, est-ce que c'est la version WMF? J'ai essayé echo $PSVersionTable.PSVersionet obtenu une sortie de$PSVersionTable.PSVersion
Loduwijk
De même, il en va de même pour les commentaires similaires de cette question.
Loduwijk
1
Vous avez probablement été déçu pour avoir dit que vous avez couru echo $PSVersionTable.PSVersionet obtenu une sortie de $PSVersionTable.PSVersion- par quoi êtes-vous confus dans mon commentaire / réponse sur l'autre question?
TheCleaner
1
Dire «J'ai fait ça et obtenu ce résultat» ne devrait jamais produire de baisse de note. Cela insinue que vous votez en aval parce que vous pensez que la personne est stupide. Ce n'était qu'un exemple d'une façon dont j'essayais d'utiliser la supposée «réponse». Les commentaires avec cette variable ont donné quelques données mais aucun moyen utile de l'utiliser. Je ne savais pas que c'était une variable dans PowerShell, et personne n'a dit que c'était - la chose la plus proche était que quelques personnes ont également mentionné la vérification de la version de PowerShell, ce que je ne cherchais pas.
Loduwijk

Réponses:

9

Consultez cette documentation de Microsoft:

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

Dans la section "Mise à niveau de Windows Powershell existante", il est dit spécifiquement:

Le package d'installation de PowerShell est inclus dans un programme d'installation WMF. La version du programme d'installation WMF correspond à la version de PowerShell ; il n'y a pas de programme d'installation autonome pour Windows PowerShell.

Je pense que c'est la réponse les gars. Exécutez $PSVersionTable.PSVersionpour obtenir la version.

DoodlingDBA
la source
Enfin une réponse définitive et faisant autorité directement de Microsoft. Je vous remercie. Accepté et +1.
Loduwijk
10

Je sais que c'est une vieille question, mais pour d'autres qui trouvent cela à partir d'une recherche Google:

Je voudrais dire que $PSVersionTable.PSVersionc'est l'indicateur le plus fiable de la version de WMF. Voir les exemples ci-dessous.

Nouvelle installation de 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 après l'installation de .NET 4.5 et 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 après l'installation de 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, qui inclut WMF 5 prêt à l'emploi:

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

Donc, comme vous pouvez le voir, la version pour $PSVersionTable.WSManStackVersion.Majorne semble changer que lors de l'installation de WMF 4, puis reste à 3. Alors que $PSVersionTable.PSVersion.Majorsemble signaler la version précise de WMF.

Mike
la source
Je vais vous dire quel serait l'indicateur le plus fiable. Recherchez le WMF par défaut pour chaque version de Windows et les numéros de Ko utilisés pour chaque cadre de gestion Windows, puis recherchez ces versions / Ko et effectuez une déclaration de cas volumineux. Je veux dire, PSVersion est probablement assez bon, mais comme cela a été souligné, nous ne le savons pas. Ou, du moins, je ne le sais pas. Mais je peux vous dire avec certitude que si vous aviez les KB et la version du système d'exploitation, vous sauriez ce que WMF avait été installé. (En prenant du recul, cependant, je suis curieux de savoir pourquoi il faut connaître la version WMF et PSVersion ne serait pas suffisant.)
Todd Walton
Cela devrait être la réponse acceptée. Bien que trouver tous les Ko permette une réponse exhaustive, cette réponse est une approche raisonnable que je peux confirmer sur au moins une version de Windows (2012 R2).
RichVel
@ToddWalton Je ne me souviens pas des détails sur la raison pour laquelle j'avais besoin de la version WMF à ce moment-là. Tout ce dont je me souviens, c'est que quelque chose que je faisais avait une condition préalable à l'installation d'une version spécifique de WMF, et ce n'était pas PowerShell. Je ne me souviens pas de quoi il s'agissait, alors peut-être que c'était quelque chose qui utilisait PowerShell. Je n'ai même pas été à ce poste depuis environ 2 ans maintenant, donc mon souvenir de cette tâche est swiss cheesey.
Loduwijk
@RichVel Vous aviez raison, cette réponse aurait dû être acceptée. Je ne sais pas pourquoi je n'ai jamais basculé la coche sur celle-là. À ce stade, cependant, une réponse réellement définitive et faisant autorité a été fournie récemment, donc je l'ai acceptée à la place. Désolé pour Mike que sa réponse n'a pas été vérifiée l'année dernière.
Loduwijk
3

Dans PowerShell, il est disponible à partir de $PSVersionTable.WSManStackVersion.Major

Mon système Windows 7 domestique:

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>

Ensuite, après avoir installé un nouveau cadre de gestion 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
la source
1
Je pense que c'est incorrect. Je viens d'installer WMF 5.1 sur un système Windows Server 2012 R2, sur lequel WSManStackVersionétait à l'origine 3.0, et il est resté à 3.0. Je pense que le meilleur guide est les deux premiers composants PSVersionqui seront les mêmes que la version WMF.
RichVel
0

S'il est installé, vous le trouverez dans "appwiz.cpl". N'oubliez pas de regarder sous "Afficher les mises à jour installées", car le WMF est distribué comme une mise à jour Windows avec des numéros de KB uniques pour les différentes versions de Windows.

WMF 3.0 installé sous Windows 7 SP 1

Håvid Falch
la source
0

Vous vérifiez quelle version de Windows Management Framework (WMF) est installée en identifiant le numéro de la base de connaissances de la version que vous recherchez, puis en utilisant, dans ce cas, une requête wmic, pour déterminer si ce numéro de la base de connaissances a été installé. Ces exemples sont tous basés sur l'utilisation de cmd.exe pour exécuter les commandes.

** Commandes pour vérifier WMF 4.0

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

** Exemple d'exécution des commandes:

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

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

Dans l'exemple ci-dessus, WMF 4.0 est installé: la base de connaissances est renvoyée à partir de la requête wmic et d'un code retour zéro.

** Commandes pour vérifier WMF 5.0

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

** Exemple d'exécution des commandes:

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

Ainsi, dans l'exemple ci-dessus, WMF 5.0 n'est pas installé: rien n'est retourné par la requête wmic et un code retour différent de zéro.

Il est possible que vous ayez utilisé une autre base de connaissances pour installer un niveau donné de WMF, mais c'est ce avec quoi je travaille actuellement.

Et je vérifie toujours PowerShell (qui est installé ou mis à niveau dans le cadre de WMF):

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

Il y a des problèmes lors de la mise à niveau vers WMF 4.0 (et encore plus tard vers 5.0) si .NET 4.5 n'est pas installé, donc si la commande PS génère une erreur, vous devez probablement installer .NET 4.5.

Stef
la source