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:
-
(Get-Host).Version
propiedad -
$host.Version
propiedad - El registro (solo Windows PowerShell)
-
$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-Host
en 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
.,
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 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.