Adam The Automator

en PowerShell, hay un millón de formas de hacer lo mismo (o casi). En esta publicación de blog, aprenderá todas las formas de comprobar la versión de PowerShell que tiene en equipos locales y remotos. Cubriremos los malos caminos y mi camino recomendado.

Si quieres pasar de novato de PowerShell a gurú de PowerShell, te recomiendo que devores este mini curso gratuito sobre cómo crear una herramienta de PowerShell. Este es un tutorial paso a paso con explicaciones completas y orientación de Adam el Automator!,

hay sitios web que muestran varias formas de comprobar la versión de Powershell. Pero ninguno que compilara una lista completa de todos ellos. Decidí cambiar eso.

todas estas formas deben funcionar tanto en Windows PowerShell como en PowerShell Core. Estos métodos también deberían funcionar en las versiones de Windows PowerShell 1.0 hasta PowerShell 7.,

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

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

Vamos a romper todos los caminos para encontrar la versión de PowerShell de menos a más recomendable.

Tabla de Contenidos

Get-Host

PowerShell tiene un concepto conocido como anfitriones. Un host es un programa que aloja el motor de 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 completamente independiente de PowerShell. Esto puede ser engañoso para muchos recién llegados. Déjame mostrarte por qué.

si ejecuta (Get-Host).Version, verá que devuelve un número de versión que parece que podría ser la versión del motor de 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., Esto parece una versión legítima.

sin embargo, a veces cuando se ejecuta 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 es necesario hacerlo siempre.

Compruebe la versión de Powershell a través de Get-Host en equipos remotos

aunque Get-Host parece devolver la misma versión cuando se ejecuta en un equipo local, nunca lo hará en equipos remotos.,

por ejemplo, ejecutemos Get-Hosten un servidor remoto de Windows Server 2016 a través de Invoke-Command y veamos qué sucede.

la última vez que lo comprobé, no era posible ejecutar PowerShell v1 en Windows Server 2016.

confiar enGet-Host es simplemente una mala idea.

Compruebe la versión de Powershell host host.Version command

referenciar $host.Version es otra forma de comprobar la versión de Powershell. La variable $host es una variable automática que devuelve la misma salida que Get-Host.,

Referencia $host.Version

no Hay nada especial acerca de este método. Es simplemente lo mismo que ejecutar Get-Host.

host host.Versión en equipos remotos

verá el mismo comportamiento a través de la comunicación remota de PowerShell con $host.Version que al ejecutar Get-Host.¡peligro, Will Robinson!

Registry

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

Puede ver que esta versión es similar pero no incluye la revisión como las otras opciones.

usar otras herramientas

usar el registro también significa que no necesita usar PowerShell 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 local ni remotamente. Puede estar seguro de que lo que ve localmente será lo mismo que lo que ve remotamente.

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

Compruebe la versión de Powershell a través de PS PSVersionTable.Comando PSVersion

El último y último método hace referencia a 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ífica sobre la versión de PowerShell engin. 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.,

$PSVersionTable de salida

$PSVersionTable en Equipos Remotos

con el $PSVersionTable variable automática se precisa de forma local como remota. Puede 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, ha aprendido todas las formas de comprobar la versión de PowerShell tanto de forma local como remota., Espero que los primeros métodos le dieron una idea de qué formas de no comprobar la versión!

recomiendo usar siempre $PSVersionTable.PSVersion. Todos los demás métodos pueden parecer similares a la versión del motor de PowerShell, pero no siempre reflejan 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 *