Adam the Automator (Español)

En PowerShell, hay un trillón de formas de hacer lo mismo (o casi). En esta publicación de blog, aprenderá todas las formas de verificar la versión de PowerShell que tiene en computadoras locales y remotas. Cubriremos las malas formas y la forma recomendada.

Si desea pasar de ser un novato de PowerShell a un gurú de PowerShell, le recomiendo devorar este GRATIS minicurso sobre la creación de una herramienta PowerShell. ¡Este es un tutorial paso a paso con explicaciones completas y orientación de Adam the Automator!

Hay sitios web que muestran varias formas de verificar la versión de Powershell. Pero ninguno que compilara una lista completa de todos ellos. 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 1.0 de Windows PowerShell hasta PowerShell 7.

Las formas en que puede encontrar una versión de PowerShell que está ejecutando son:

  1. La (Get-Host).Version propiedad
  2. La $host.Version propiedad
  3. El registro (solo Windows PowerShell)
  4. La $PSVersionTable.PSVersion propiedad

Analicemos todas las formas de encontrar la versión de PowerShell de la menos a la más recomendada. .

Tabla de contenido

Get-Host

PowerShell tiene un concepto conocido como hosts. Un host es un programa que aloja el motor PowerShell. No es el motor de PowerShell en sí. La consola de PowerShell o un editor de código con un terminal integrado son hosts de PowerShell.

Un host puede tener una versión que sea completamente independiente de PowerShell. Esto puede engañar a muchos recién llegados. Déjame mostrarte por qué.

Si ejecutas (Get-Host).Version, verás que devuelve un número de versión que parece que podría ser la versión del motor PowerShell. Las apariencias engañan.

A continuación, he ejecutado Get-Host en Windows PowerShell 5.1 y puede ver que vuelve con 5.1.17134.858. Esta parece una versión legítima.

Sin embargo, a veces, cuando ejecuta Get-Host en una terminal integrada, el la versión no es la misma. Aunque normalmente el host representará la misma versión del motor, no siempre es necesario hacerlo.

Verifique la versión de Powershell a través de Get-Host en computadoras remotas

Aunque Get-Host parece devolver la misma versión cuando se ejecuta 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 vea qué sucede.

La última vez que verifiqué, no es posible ejecutar PowerShell v1 en Windows Server 2016.

Depender de Get-Host es simplemente una mala idea.

Verifique la versión de Powershell $ host.Version command

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.

Hacer referencia a $host.Version

No hay nada especial en este método. Es simplemente lo mismo que ejecutar Get-Host.

$ host.Version en equipos remotos

Verá el mismo comportamiento a través de PowerShell Remoting con $host.Version como ejecutará Get-Host.

¡Peligro, Will Robinson!

Registro

Si no desea abrir PowerShell, también puede verificar el registro. La versión de PowerShell está escondida bajo un valor en la ruta de la clave de registro HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine. Esta clave de registro tiene un valor llamado PowerShellVersion al que puede hacer referencia usando Get-ItemProperty.

Puede ver que esto La versión es similar pero no incluye la revisión como lo hacen las otras opciones.

Uso de otras herramientas

El uso del registro también significa que no necesita usar PowerShell en absoluto para encontrar la versión. Puede ejecutar comandos desde el símbolo del sistema u otra herramienta que pueda leer el registro.

Registro en equipos remotos

El registro es estático y los valores no cambiarán de forma local o remota. Puede estar seguro de que lo que ve localmente será lo mismo que ve de forma remota.

Mostrar la misma versión local y remotamente es bueno. Pero tengo una mejor manera de mostrarte el uso de la $PSVersionTable variable automática.

Verifica la versión de Powershell a través del comando $ PSVersionTable.PSVersion

El último y último método es hacer referencia a la propiedad PSVersion en la $PSVersionTable variable automática.Este método siempre representará el motor PowerShell.

La $PSVersionTable variable automática 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 Desktop para proporcionar más información sobre la edición de PowerShell que se está ejecutando.

Salida de $ PSVersionTable

$ PSVersionTable en computadoras remotas

Usando el $PSVersionTable variable automática es precisa tanto localmente como remotamente. Puede ver a continuación que si envuelve $PSVersionTable.PSVersion en un scriptblock y ejecuta ese código en una computadora remota, devolverá la misma versión.

Resumen

En esta publicación de blog, ha aprendido todas las formas de verificar la versión de PowerShell tanto de forma local como remota. ¡Espero que los primeros métodos le hayan dado una idea de las formas de no verificar la versión!

Recomiendo usar siempre $PSVersionTable.PSVersion. Todos los demás métodos pueden parecer similares a la versión del motor PowerShell, pero es posible que no siempre reflejen la versión del motor.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *