Quale versione di Windows Management Framework è installata?


16

Come si controlla per vedere quale versione di Windows Management Framework (WMF) è installata? Sembra che dovrebbe essere una cosa semplice da scoprire, ma non posso. Anche su Google un sacco di versioni diverse della domanda non si presenta quasi nulla.

Non è in appwiz.cpl e regedit non trova nulla per "Windows Management Framework" e trova troppe cose estranee per "wmf"

Voglio solo sapere come controllarlo, in modo ragionevole. C'è una chiave di registro per questo? C'è un file che posso controllare? Nulla???

La cosa più vicina che ho trovato era qui su serverfault: metodi per rilevare la versione di Windows Management Framework . Questa domanda inizia allo stesso modo, ma sembra richiedere un modo specifico di controllo da utilizzare in un oggetto Criteri di gruppo; forse è per questo che non ha ottenuto risposte.

Ci sono più computer su cui voglio verificare. Quello con cui sto iniziando è Windows Server 2008 R2 Standard. Ci saranno anche altri sistemi operativi Windows Server.

Se sei a conoscenza di tag che funzionano meglio di quello che ho, per favore commenta o ripagina; Non sono riuscito a trovare nulla che descrivesse bene questa domanda.


Aggiornamento: alcune persone sembrano pensare che " $PSVersionTable" (e / o varie proprietà di esso) sia una risposta. Recentemente ho capito di recente che si tratta di una variabile di PowerShell (forse il prefisso "PS" avrebbe dovuto darlo per me, ma non l'ha fatto) e ho cercato di scavare più a fondo. Ciò ha portato a un'altra domanda: cosa rappresentano i contenuti di $ PSVersionTable di PowerShell? .

Aggiornamento2: in base a tutte le informazioni che ho raccolto ora e alla mia migliore comprensione, sono abbastanza certo che la variabile integrata di PowerShell $PSVersionTable.PSVersionnon è tecnicamente la risposta a questo, ma che spesso (a volte? Sempre? Non sono sicuro) il lo stesso, come nelle versioni potrebbe andare di pari passo. La $PSVersionTable.WSManStackVersionvariabile potrebbe essere quello che voglio, ma la breve descrizione ufficiale di quella proprietà lo mostra come rappresentante lo stack WS-Management. Lo stack WS-Management è la stessa cosa di WMF? Googling suggerisce che sono strettamente correlati, ma non sono sicuro che la risposta sia affermativa.


1
Possibile copia di: serverfault.com/questions/555100/… La risposta è nei commenti anche se non è stata ancora accettata una risposta.
Wesley,

@Wesley Ho già fornito un link a quella domanda e l'ho menzionato. La risposta non è nei commenti. "Stai chiedendo come eseguire qualcosa di simile $PSVersionTable.PSVersionma utilizzando WMI?" non è una risposta. Che cosa vuol dire, anche? Se potessi prendere quel commento e trasformarlo in una risposta che è effettivamente utilizzabile, lo apprezzerei. È $PSVersionTable.PSVersionuna variabile di qualche tipo disponibile da qualche parte? Se sì, è garantita la versione WMF? Ho provato a echo $PSVersionTable.PSVersionottenere un risultato di$PSVersionTable.PSVersion
Loduwijk,

Inoltre, lo stesso vale per i commenti simili di quella domanda.
Loduwijk,

1
Probabilmente sei stato sottratto per aver detto che hai corso echo $PSVersionTable.PSVersione ottenuto un output di $PSVersionTable.PSVersion- cosa sei confuso nel mio commento / risposta sull'altra domanda?
TheCleaner,

1
Dire "Ho fatto questo e ottenuto questo risultato" non dovrebbe mai produrre un downvote. Ciò insinua che stai votando a fondo perché pensi che la persona sia stupida. Quello era solo un esempio di un modo in cui stavo cercando di usare la presunta "risposta". I commenti con quella variabile hanno dato alcuni dati ma nessun modo utile per usarli. Non sapevo che fosse una variabile in PowerShell e nessuno ha detto che lo fosse - la cosa più vicina è stata che un paio di persone hanno menzionato il controllo della versione di PowerShell, cosa che non stavo cercando.
Loduwijk,

Risposte:


9

Vedi questa documentazione di Microsoft:

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

Nella sezione "Aggiornamento di Windows Powershell esistente", si dice in particolare:

Il pacchetto di installazione per PowerShell è incluso in un programma di installazione di WMF. La versione del programma di installazione di WMF corrisponde alla versione di PowerShell ; non esiste un programma di installazione autonomo per Windows PowerShell.

Penso che questa sia la risposta, ragazzi. Esegui $PSVersionTable.PSVersionper ottenere la versione.


Finalmente una risposta definitiva e autorevole direttamente da Microsoft. Grazie. Accettato e +1.
Loduwijk,

10

So che questa è una vecchia domanda, ma per gli altri che la trovano da una Ricerca Google:

Vorrei sostenere che $PSVersionTable.PSVersionè l'indicatore più affidabile della versione di WMF. Vedi sotto esempi.

Nuova installazione di 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 dopo l'installazione di .NET 4.5 e 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 dopo l'installazione di 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, che include WMF 5 pronto all'uso:

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

Come puoi vedere, la versione per $PSVersionTable.WSManStackVersion.Majorsembra solo cambiare sull'installazione di WMF 4 e poi rimane a 3. Mentre $PSVersionTable.PSVersion.Majorsembra riportare la versione accurata di WMF.


Ti dirò quale sarebbe l'indicatore più affidabile. Trova il WMF predefinito per ogni versione di Windows e quali numeri KB vengono utilizzati per ciascun Windows Management Framework, quindi controlla quelle versioni / KB e fai una grande dichiarazione. Voglio dire, probabilmente PSVersion è abbastanza buono, ma come è stato sottolineato, non lo sappiamo. O almeno non lo so. Ma posso dirti con certezza se avessi i KB e la versione del sistema operativo, sapresti cosa era stato installato WMF. (Facendo un passo indietro, però, sono curioso di sapere perché si debba conoscere la versione di WMF e PSVersion non sarebbe sufficiente.)
Todd Walton,

Questa dovrebbe essere la risposta accettata. Mentre trovare tutti i KB consentirebbe una risposta esaustiva, questa risposta è un approccio ragionevole che posso confermare su almeno una versione di Windows (2012 R2).
RichVel

@ToddWalton Non ricordo i dettagli sul perché avevo bisogno della versione di WMF in quel momento. Tutto quello che ricordo è che qualcosa che stavo facendo aveva un prerequisito per l'installazione di una versione specifica di WMF e non era PowerShell. Non ricordo cosa fosse, quindi forse era qualcosa che utilizzava PowerShell. Tuttavia, non lavoro in questo lavoro da circa 2 anni, quindi il mio ricordo di questo compito è svizzero.
Loduwijk,

@RichVel Avevi ragione, quella risposta avrebbe dovuto essere quella accettata. Non so perché non ho mai commutato il segno di spunta in quello. A questo punto, però, recentemente è stata fornita una risposta autorevole e definitiva, quindi ho accettato quella. Mi dispiace per Mike che la sua risposta non sia stata verificata per l'ultimo anno.
Loduwijk,

3

In PowerShell è disponibile da $PSVersionTable.WSManStackVersion.Major

Il mio sistema Windows 7 di casa:

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>

Quindi dopo aver installato un Windows Management Framework più recente:

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
Credo che questo non sia corretto. Ho appena installato WMF 5.1 su un sistema Windows Server 2012 R2, su cui WSManStackVersionoriginariamente era 3.0, ed è rimasto a 3.0. Penso che la migliore guida sia i primi due componenti PSVersionche saranno gli stessi della versione WMF.
RichVel

0

Se è installato, lo troverai in "appwiz.cpl". Ricorda di guardare sotto "Visualizza aggiornamenti installati", poiché WMF è distribuito come aggiornamento di Windows con numeri KB univoci per le diverse versioni di Windows.

WMF 3.0 installato in Windows 7 SP 1


0

Si controlla per vedere quale versione di Windows Management Framework (WMF) è installata identificando il numero KB della versione che si sta verificando e quindi utilizzando, in questo caso, una query wmic, per determinare se quel numero KB è stato installato. Questi esempi sono tutti basati sull'uso di cmd.exe per eseguire i comandi.

** Comandi per verificare la presenza di WMF 4.0

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

** Esempio di esecuzione dei comandi:

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

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

Nell'esempio sopra è installato WMF 4.0: il KB viene restituito dalla query wmic e un codice di ritorno zero.

** Comandi per verificare la presenza di WMF 5.0

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

** Esempio di esecuzione dei comandi:

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

Quindi nell'esempio sopra WMF 5.0 non è installato: nulla restituito dalla query wmic e un codice di ritorno diverso da zero.

È possibile che tu abbia utilizzato un KB diverso per installare un determinato livello di WMF ma questi sono quelli con cui sto attualmente lavorando.

E controllo sempre PowerShell (che è installato o aggiornato come parte di WMF):

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

Ci sono problemi durante l'aggiornamento a WMF 4.0 (e di nuovo successivamente a 5.0) se .NET 4.5 non è installato, quindi se il comando PS genera un errore, probabilmente dovresti installare .NET 4.5.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.