¿Qué versión de Windows Management Framework está instalada?

16

¿Cómo verifica qué versión de Windows Management Framework (WMF) está instalada? Parece que debería ser algo simple de descubrir, pero no puedo. Incluso buscar en Google un montón de versiones diferentes de la pregunta resulta poco o nada.

No está en appwiz.cpl, y regedit no encuentra nada para "Windows Management Framework" y encuentra demasiadas cosas extrañas para "wmf"

Solo quiero saber cómo verificarlo, de cualquier manera razonable. ¿Hay una clave de registro para ello? ¿Hay algún archivo que pueda consultar? ¿¿¿Cualquier cosa???

Lo más cercano que pude encontrar fue aquí en serverfault: Métodos para detectar la versión de Windows Management Framework . Esa pregunta comienza de la misma manera, pero parece pedir una forma específica de verificación para ser utilizada en un GPO; tal vez por eso no obtuvo respuestas.

Hay varias computadoras en las que quiero verificar esto. Con el que estoy comenzando es con Windows Server 2008 R2 Standard. También habrá otros sistemas operativos Windows Server.

Si conoce alguna etiqueta que funcione mejor que la que tengo, comente o vuelva a etiquetar; No pude encontrar nada que describiera bien esta pregunta.


Actualización: Algunas personas parecen pensar que " $PSVersionTable" (y / o varias propiedades del mismo) es una respuesta. Finalmente me di cuenta recientemente de que esta es una variable de PowerShell (tal vez el prefijo 'PS' debería haberlo revelado para mí, pero no lo hizo) e intenté profundizar. Esto dio lugar a otra pregunta: ¿Qué representan los contenidos de $ PSVersionTable de PowerShell? .

Actualización 2: según toda la información que he reunido ahora y mi mejor comprensión, estoy bastante seguro de que la variable incorporada de PowerShell $PSVersionTable.PSVersionno es técnicamente la respuesta a esto, pero que a menudo es (a veces? Siempre? No estoy seguro) el igual, ya que en las versiones podrían ir de la mano. La $PSVersionTable.WSManStackVersionvariable puede ser lo que quiero, pero la breve descripción oficial de esa propiedad muestra que representa la pila WS-Management. ¿La pila WS-Management es lo mismo que WMF? Buscar en Google sugiere que están estrechamente relacionados, pero no estoy seguro de si la respuesta a eso es sí.

Loduwijk
fuente
1
Posible engaño de: serverfault.com/questions/555100/… La respuesta está en los comentarios a pesar de que aún no hay una respuesta aceptada.
Wesley
@Wesley Ya proporcioné un enlace a esa pregunta y la mencioné. La respuesta no está en los comentarios. "¿Estás preguntando cómo ejecutar algo como $PSVersionTable.PSVersionusar WMI?" No es una respuesta. ¿Y eso que significa? Si pudiera tomar ese comentario y convertirlo en una respuesta que sea realmente útil, se lo agradecería. ¿Es esta $PSVersionTable.PSVersionuna variable de algún tipo que está disponible en alguna parte? En caso afirmativo, ¿se garantiza que sea la versión WMF? Traté echo $PSVersionTable.PSVersiony obtuve una salida de$PSVersionTable.PSVersion
Loduwijk
Además, lo mismo ocurre con los comentarios similares de esa pregunta.
Loduwijk
1
Probablemente te rechazaron por decir que corriste echo $PSVersionTable.PSVersiony obtuviste un resultado de $PSVersionTable.PSVersion: ¿por qué estás confundido en mi comentario / respuesta sobre la otra pregunta?
TheCleaner
1
Decir "Hice esto y obtuve este resultado" nunca debería producir un voto negativo. Eso insinúa que estás votando mal porque crees que la persona es estúpida. Ese fue solo un ejemplo de una forma en que estaba tratando de hacer uso de la supuesta "respuesta". Los comentarios con esa variable dieron algunos datos, pero no hay forma útil de usarlos. No sabía que es una variable en PowerShell, y nadie dijo que lo fuera; lo más parecido fue que un par de personas también mencionaron verificar la versión de PowerShell, que es algo que no estaba buscando.
Loduwijk

Respuestas:

9

Consulte esta documentación de Microsoft:

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

En la sección "Actualización de Windows Powershell existente", dice específicamente:

El paquete de instalación para PowerShell viene dentro de un instalador WMF. La versión del instalador WMF coincide con la versión de PowerShell ; No hay un instalador independiente para Windows PowerShell.

Creo que esta es la respuesta chicos. Corre $PSVersionTable.PSVersionpara obtener la versión.

DoodlingDBA
fuente
Finalmente, una respuesta definitiva y autorizada directamente de Microsoft. Gracias. Aceptado y +1.
Loduwijk
10

Sé que esta es una pregunta antigua, pero para otros que la encuentran en una Búsqueda de Google:

Me gustaría argumentar que $PSVersionTable.PSVersiones el indicador más confiable de la versión de WMF. Ver ejemplos a continuación.

Instalación nueva 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 después de la instalación de .NET 4.5 y 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 después de la instalación 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, que incluye WMF 5 listo para usar:

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 puede ver, la versión para $PSVersionTable.WSManStackVersion.Majorsolo parece cambiar en la instalación de WMF 4 y luego permanece en 3. Mientras $PSVersionTable.PSVersion.Majorparece informar la versión precisa de WMF.

Miguel
fuente
Te diré cuál sería el indicador más confiable. Encuentre el WMF predeterminado para cada versión de Windows, y qué números de KB se usan para cada Marco de administración de Windows, y luego verifique esas versiones / KB y haga una declaración de caso grande. Quiero decir, probablemente PSVersion es lo suficientemente bueno, pero como se ha señalado, no lo sabemos. O, al menos, no lo sé. Pero puedo decirle con certeza que si tuviera los KB y la versión del sistema operativo, sabría qué WMF se había instalado. (Sin embargo, dando un paso atrás, tengo curiosidad por saber por qué uno necesita saber que la versión de WMF y PSVersion no serían suficientes.)
Todd Walton
Esta debería ser la respuesta aceptada. Si bien encontrar todos los KB permitiría una respuesta exhaustiva, esta respuesta es un enfoque razonable que puedo confirmar en al menos una versión de Windows (2012 R2).
RichVel
@ToddWalton No recuerdo los detalles sobre por qué necesitaba la versión WMF en ese momento. Todo lo que recuerdo es que algo que estaba haciendo tenía el requisito previo de que se instalara una versión específica de WMF, y no era PowerShell. Sin embargo, no recuerdo qué era, así que tal vez fue algo que usó PowerShell. Sin embargo, ni siquiera he estado en ese trabajo durante aproximadamente 2 años, por lo que mi recuerdo de esa tarea es suizo.
Loduwijk
@RichVel Tenías razón, esa respuesta debería haber sido la aceptada. No estoy seguro de por qué nunca cambié la marca de verificación a esa. En este punto, sin embargo, recientemente se ha proporcionado una respuesta autoritaria realmente definitiva, por lo que he aceptado esa en su lugar. Lamento que Mike no haya verificado su respuesta en el último año.
Loduwijk
3

En PowerShell está disponible desde $PSVersionTable.WSManStackVersion.Major

El sistema de Windows 7 de mi 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>

Luego, después de instalar un nuevo marco de administración de 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
fuente
1
Creo que esto es incorrecto. Acabo de instalar WMF 5.1 en un sistema Windows Server 2012 R2, que WSManStackVersionoriginalmente era 3.0, y se mantuvo en 3.0. Creo que la mejor guía son los dos primeros componentes, PSVersionque serán los mismos que la versión WMF.
RichVel
0

Si está instalado, lo encontrará en "appwiz.cpl". Solo recuerde buscar en "Ver actualizaciones instaladas", ya que el WMF se distribuye como una actualización de Windows con números KB únicos para las diferentes versiones de Windows.

WMF 3.0 instalado bajo Windows 7 SP 1

Håvid Falch
fuente
0

Verifica qué versión de Windows Management Framework (WMF) está instalada identificando el número de KB de la versión que está buscando y luego, en este caso, una consulta wmic, para determinar si ese número de KB se ha instalado. Todos estos ejemplos se basan en el uso de cmd.exe para ejecutar los comandos.

** Comandos para verificar WMF 4.0

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

** Ejemplo de ejecución de los comandos:

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

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

En el ejemplo anterior, está instalado WMF 4.0: el KB se devuelve desde la consulta wmic y un código de retorno cero.

** Comandos para verificar WMF 5.0

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

** Ejemplo de ejecución de los comandos:

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

Entonces, en el ejemplo anterior, WMF 5.0 no está instalado: nada devuelto por la consulta wmic y un código de retorno distinto de cero.

Es posible que haya utilizado una KB diferente para instalar un nivel determinado de WMF, pero actualmente es con lo que estoy trabajando.

Y siempre verifico PowerShell (que está instalado o actualizado como parte de WMF):

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

Hay problemas al actualizar a WMF 4.0 (y nuevamente a 5.0) si .NET 4.5 no está instalado, por lo que si el comando PS genera un error, probablemente deba instalar .NET 4.5.

Stef
fuente