En PowerShell, hay mil formas de hacer lo mismo (o algo similar). En esta publicación de blog, aprenderás todas las formas de verificar la versión de PowerShell que tienes en equipos locales y remotos. Cubriremos las formas incorrectas y la forma que recomiendo.
Existen sitios web que muestran varias formas de verificar tu versión de PowerShell. Pero ninguno ha compilado una lista completa de todas ellas. Decidí cambiar eso.
Todas estas formas deberían funcionar tanto en Windows PowerShell como en PowerShell Core. Estos métodos también deberían funcionar en las versiones de Windows PowerShell desde la 1.0 hasta PowerShell 7.
Las formas en las que puedes averiguar la versión de PowerShell que estás utilizando son:
- La propiedad
(Get-Host).Version
- La propiedad
$host.Version
- El registro (solo en Windows PowerShell)
- La propiedad
$PSVersionTable.PSVersion
Desglosemos todas las formas de encontrar la versión de PowerShell, desde la menos recomendada hasta la más recomendada.
Get-Host
PowerShell tiene un concepto conocido como hosts. Un host es un programa que está hospedando el motor de PowerShell. No es el propio motor de PowerShell. La consola de PowerShell o un editor de código con una terminal integrada son hosts de PowerShell.
A host can have a version that is completely independent of PowerShell itself. This can be deceiving to many newcomers. Let me show you why.
Si ejecutas (Get-Host).Version
, verás que devuelve un número de versión que parece ser la versión del motor de PowerShell. Las apariencias pueden ser engañosas.
A continuación, he ejecutado Get-Host
en Windows PowerShell 5.1 y puedes ver que devuelve 5.1.17134.858. Esto parece ser una versión legítima.
Sin embargo, a veces cuando ejecutas Get-Host
en un terminal integrado, la versión no es la misma. Aunque normalmente, el host representará la misma versión del motor, no necesariamente siempre lo hace.
Verificar la versión de PowerShell a través de Get-Host en computadoras remotas
A pesar de que Get-Host
parece devolver la misma versión al ejecutarse en una computadora local, nunca lo hará en computadoras remotas.
Por ejemplo, ejecutemos Get-Host
en un servidor remoto de Windows Server 2016 a través de Invoke-Command
y veamos qué sucede.
La última vez que verifiqué, no es posible ejecutar PowerShell v1 en Windows Server 2016.
Confiar en Get-Host
es simplemente una mala idea en general.
Verificar la versión de PowerShell con el comando $host.Version
Hacer referencia a $host.Version
es otra forma de verificar la versión de PowerShell. La variable $host
es una variable automática que devuelve el mismo resultado que Get-Host
.

$host.Version
No hay nada especial acerca de este método. Es simplemente lo mismo que ejecutar Get-Host
.
$host.Version en Computadoras Remotas
Verás el mismo comportamiento a través de PowerShell Remoting con $host.Version
como si estuvieras ejecutando Get-Host
.
¡Peligro, Will Robinson!
Registro
Si no deseas abrir PowerShell en sí mismo, también puedes verificar el registro. La versión de PowerShell está ubicada bajo un valor en la clave del registro HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine
. Esta clave de registro tiene un valor llamado PowerShellVersion
al que puedes hacer referencia usando Get-ItemProperty
.
Puedes ver que esta versión es similar pero no incluye la revisión como lo hacen las otras opciones.
Uso de Otras Herramientas
Usar el registro también significa que no necesitas usar PowerShell en absoluto para encontrar la versión. Puedes ejecutar comandos desde el símbolo del sistema o otra herramienta que pueda leer el registro.
Registro en Computadoras Remotas
El registro es estático y los valores no cambiarán local ni remotamente. Puedes estar seguro de que lo que ves localmente será lo mismo que ves remotamente.
Mostrar la misma versión local y remotamente es bueno. Pero tengo una mejor manera de mostrarte usando la variable automática $PSVersionTable
.
Verificar la versión de PowerShell mediante el comando $PSVersionTable.PSVersion
El último y método final es referenciar la propiedad PSVersion
en la variable automática $PSVersionTable
. Este método siempre representará el motor de PowerShell.
La variable automática $PSVersionTable
es una tabla hash de solo lectura que devuelve información específicamente sobre la versión del motor de PowerShell. Esta variable automática no solo devuelve la versión, sino también PSEdition. Esta propiedad puede ser Core o Escritorio para proporcionar más información sobre la edición de PowerShell que se está ejecutando.

$PSVersionTable en equipos remotos
Usar la variable automática $PSVersionTable
es preciso tanto localmente como de forma remota. Puedes ver a continuación que al envolver $PSVersionTable.PSVersion
en un scriptblock y ejecutar ese código en un equipo remoto, devolverá la misma versión.
Resumen
En esta publicación de blog, has aprendido todas las formas de verificar la versión de PowerShell tanto local como remotamente. ¡Espero que los primeros métodos te hayan dado una idea de qué formas no utilizar para verificar la versión!
I recommend always using $PSVersionTable.PSVersion
. All of the other methods may appear similar to the PowerShell engine version but may not always reflect the engine version.
Si me he perdido alguna forma, por favor avísame en los comentarios. Estaré encantado de actualizar la publicación y darte crédito.