Qual versão do Windows Management Framework está instalada?

16

Como você verifica se a versão do Windows Management Framework (WMF) está instalada? Parece que deve ser uma coisa simples de descobrir, mas não posso. Até mesmo pesquisando no Google várias versões diferentes da pergunta acaba pouco ou nada.

Não está no appwiz.cpl e o regedit não encontra nada para o "Windows Management Framework" e encontra muitas coisas estranhas para o "wmf"

Eu só quero saber como verificar isso, de qualquer maneira razoável. Existe uma chave de registro para isso? Existe um arquivo que eu possa verificar? Qualquer coisa???

A coisa mais próxima que pude encontrar foi aqui na falha do servidor : Métodos para detectar a versão do Windows Management Framework . Essa pergunta começa da mesma forma, mas parece solicitar uma maneira específica de verificação a ser usada em um GPO; talvez seja por isso que não obteve respostas.

Existem vários computadores nos quais quero verificar isso. Estou começando com o Windows Server 2008 R2 Standard. Também haverá outros sistemas operacionais Windows Server.

Se você souber de alguma tag que funcione melhor do que a que eu tenho, comente ou refaça a marcação; Não consegui encontrar nada que descrevesse bem essa pergunta.


Atualização: algumas pessoas parecem pensar que " $PSVersionTable" (e / ou várias propriedades) são uma resposta. Finalmente, percebi recentemente que essa é uma variável do PowerShell (talvez o prefixo 'PS' devesse ter dado para mim, mas não o fez) e tentei ir mais fundo. Isso resultou em outra pergunta: o que o conteúdo de $ PSVersionTable do PowerShell representa? .

Update2: Com base em todas as informações que reuni agora e no meu melhor entendimento, estou bastante certo de que a variável interna do PowerShell $PSVersionTable.PSVersionnão é tecnicamente a resposta para isso, mas que é frequentemente (às vezes? Sempre? Não tenho certeza) a mesmo, como nas versões pode andar de mãos dadas. A $PSVersionTable.WSManStackVersionvariável pode ser o que eu quero, mas a descrição curta oficial dessa propriedade mostra isso como representando a pilha do WS-Management. A pilha WS-Management é a mesma coisa que WMF? O Google sugere que eles estejam intimamente relacionados, mas não tenho certeza se a resposta é sim.

Loduwijk
fonte
11
Possível fraude de: serverfault.com/questions/555100/… A resposta está nos comentários, mesmo que ainda não haja uma resposta aceita.
Wesley
@ Wesley Eu já forneci um link para essa pergunta e a mencionei. A resposta não está nos comentários. "Você está perguntando como executar algo parecido, $PSVersionTable.PSVersionmas usando o WMI?" não é uma resposta. Afinal, o que isso quer dizer? Se você pudesse pegar esse comentário e transformá-lo em uma resposta realmente útil, eu agradeceria. É este $PSVersionTable.PSVersionuma variável de algum tipo que está em algum lugar disponível? Se sim, é garantida a versão do WMF? Eu tentei echo $PSVersionTable.PSVersione obtive uma saída de$PSVersionTable.PSVersion
Loduwijk 10/09/14
Além disso, o mesmo vale para os comentários semelhantes dessa pergunta.
Loduwijk 10/09
11
Você provavelmente foi prejudicado por dizer que correu echo $PSVersionTable.PSVersione obteve uma saída $PSVersionTable.PSVersion- o que você está confuso no meu comentário / resposta sobre a outra pergunta?
TheCleaner 10/09/14
11
Dizer "eu fiz isso e obtive esse resultado" nunca deve produzir um voto negativo. Isso insinua que você está com voto negativo porque acha que a pessoa é burra. Esse foi apenas um exemplo de uma maneira pela qual eu estava tentando fazer uso da suposta "resposta". Os comentários com essa variável forneceram alguns dados, mas nenhuma maneira útil de usá-los. Eu não sabia que era uma variável no PowerShell, e ninguém disse que era - o mais próximo foi que algumas pessoas mencionaram a verificação da versão do PowerShell também, o que eu não estava procurando.
Loduwijk 10/09

Respostas:

9

Consulte esta documentação da Microsoft:

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

Na seção "Atualizando o Windows Powershell existente", diz especificamente:

O pacote de instalação do PowerShell vem dentro de um instalador do WMF. A versão do instalador do WMF corresponde à versão do PowerShell ; não há instalador autônomo para o Windows PowerShell.

Eu acho que essa é a resposta pessoal. Execute $PSVersionTable.PSVersionpara obter a versão.

DoodlingDBA
fonte
Finalmente, uma resposta definitiva e autoritária diretamente da Microsoft. Obrigado. Aceito e +1.
Loduwijk 21/09
10

Sei que essa é uma pergunta antiga, mas para outras pessoas que a encontram na Pesquisa do Google:

Eu gostaria de argumentar que esse $PSVersionTable.PSVersioné o indicador mais confiável da versão do WMF. Veja exemplos abaixo.

Instalação nova do 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 após a instalação do .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 após a instalação do 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, que inclui o WMF 5 pronto para o 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

Como você pode ver, a versão $PSVersionTable.WSManStackVersion.Majorapenas parece mudar na instalação do WMF 4 e permanece em 3. Enquanto $PSVersionTable.PSVersion.Majorparece relatar a versão exata do WMF.

Mike
fonte
Vou lhe dizer qual seria o indicador mais confiável. Encontre o WMF padrão para cada versão do Windows e quais números de KB são usados ​​para cada Windows Management Framework, verifique essas versões / KBs e faça uma declaração de maiúsculas e minúsculas. Quero dizer, provavelmente a PSVersion é boa o suficiente, mas, como foi apontado, não sabemos disso. Ou, pelo menos, não sei disso. Mas posso ter certeza de que, se você tivesse os KBs e a versão do sistema operacional, saberia o que o WMF foi instalado. (Tomar um passo para trás, no entanto, estou curioso sobre por que é necessário saber a versão WMF e PSVersion não seria suficiente.)
Todd Walton
Essa deve ser a resposta aceita. Embora encontrar todas as KBs permita uma resposta exaustiva, essa resposta é uma abordagem razoável que posso confirmar em pelo menos uma versão do Windows (2012 R2).
RichVel
@ToddWalton Não me lembro dos detalhes específicos sobre por que eu precisava da versão WMF naquele momento. Tudo o que lembro é que algo que eu estava fazendo tinha um pré-requisito de que uma versão específica do WMF fosse instalada e não era o PowerShell. Não me lembro o que era, então talvez tenha sido algo que usou o PowerShell. Eu nem estou nesse emprego há cerca de 2 anos, então minha memória dessa tarefa é suiça.
Loduwijk 21/09/17
@ RichVel Você estava certo, essa resposta deveria ter sido a aceita. Não sei por que nunca mudei a marca de seleção para essa. Neste ponto, no entanto, uma resposta definitiva e autorizada foi fornecida recentemente, então eu aceitei essa. Lamento Mike por sua resposta não ter sido verificada no ano passado.
Loduwijk 21/09/17
3

No PowerShell, está disponível em $PSVersionTable.WSManStackVersion.Major

Meu sistema Windows 7 doméstico:

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>

Depois de instalar um Windows Management Framework mais 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>
Brian
fonte
11
Eu acredito que isso está incorreto. Acabei de instalar o WMF 5.1 em um sistema Windows Server 2012 R2, no qual WSManStackVersionera originalmente 3.0, e permanecia em 3.0. Eu acho que o melhor guia são os dois primeiros componentes, PSVersionque serão os mesmos da versão WMF.
RichVel
0

Se estiver instalado, você o encontrará em "appwiz.cpl". Lembre-se de procurar em "Exibir atualizações instaladas", pois o WMF é distribuído como uma atualização do Windows com números de KB exclusivos para as diferentes versões do Windows.

WMF 3.0 instalado no Windows 7 SP 1

Håvid Falch
fonte
0

Você verifica qual versão do Windows Management Framework (WMF) está instalada, identificando o número de KB da versão que está verificando e, em seguida, usando, nesse caso, uma consulta wmic, para determinar se esse número de KB foi instalado. Estes exemplos são todos baseados no uso do cmd.exe para executar os comandos.

** Comandos para verificar o WMF 4.0

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

** Exemplo de execução dos comandos:

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

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

No exemplo acima, o WMF 4.0 está instalado: O KB é retornado da consulta wmic e um código de retorno zero.

** Comandos para verificar o WMF 5.0

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

** Exemplo de execução dos comandos:

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

Portanto, no exemplo acima, o WMF 5.0 não está instalado: nada retornado da consulta wmic e um código de retorno diferente de zero.

É possível que você tenha usado um KB diferente para instalar um determinado nível do WMF, mas é com isso que estou trabalhando atualmente.

E eu sempre verifico o PowerShell (que é instalado ou atualizado como parte do WMF):

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

Há problemas ao atualizar para o WMF 4.0 (e novamente mais tarde para 5.0) se o .NET 4.5 não estiver instalado, portanto, se o comando PS gerar um erro, você provavelmente deverá instalar o .NET 4.5.

Stef
fonte