Obtener la versión de PowerShell

Migel Hewage Nimesha 30 enero 2023
  1. Utilice la propiedad $PSVersionTable.PSVersion para obtener la versión de PowerShell
  2. Utilice la propiedad (Get-Host).Version para obtener la versión de PowerShell
  3. Utilice la propiedad $host.Version para obtener la versión de PowerShell
  4. Use el registro para obtener la versión de PowerShell
Obtener la versión de PowerShell

PowerShell es un tipo de símbolo del sistema que es más complejo. Viene con una gran cantidad de cmdlets preparados y la capacidad de aprovechar .NET framework/C# en varios escenarios. PowerShell ISE es una interfaz gráfica de usuario para depurar y editar scripts en Windows. En PowerShell, se puede hacer lo mismo de diferentes maneras. Entonces, principalmente, hay cuatro formas en que podemos obtener la versión de PowerShell, y se detallan a continuación.

Utilice la propiedad $PSVersionTable.PSVersion para obtener la versión de PowerShell

Así que el primer método que estamos investigando es el atributo PSVersion en la variable automática $PSVersionTable. Aquí, representa el motor de PowerShell.

PS52> $PSVersionTable.PSVersion

Producción :

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      19041  1320

$PSVersionTable es una tabla hash de solo lectura que proporciona información sobre la versión del motor de PoweShell y PSEdition. Este parámetro puede ser Desktop o Core y le proporcionará información adicional sobre la edición de PowerShell que está utilizando.

La variable automatizada $PSVersionTable es tan precisa localmente como lo sería de forma remota. I en el siguiente ejemplo que incluye $PSVersionTable. PSVersion dentro de un bloque de script y ejecutarlo en una máquina remota devuelve la misma versión.

PS> Invoke-Command -ComputerName 11.0.0.3 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred

Producción:

Use la propiedad $PSVersionTable.PSVersion para obtener la versión de PowerShell

Utilice la propiedad (Get-Host).Version para obtener la versión de PowerShell

La idea de hosts se usa en PowerShell. No es el motor de PowerShell el que está causando el problema. Los hosts de PowerShell son editores/consolas de código de PowerShell con un terminal integrado. El anfitrión podría tener una edición totalmente autónoma de PowerShell.

Cuando se usa (Get-Host).Version, genera un número de versión similar a la versión de PowerShell.

PS52> (Get-Host).Version

Producción :

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      19041  1320

Sin embargo, la versión de Get-Host en el terminal integrado no siempre es la misma. Aunque el host normalmente representa la misma edición del motor de PowerShell, no siempre es así. Cuando se llama a Get-Host en una computadora local, siempre devuelve la misma versión pero nunca en sistemas remotos.

Por lo tanto, usar Get-Host para todo es una idea terrible.

Utilice la propiedad $host.Version para obtener la versión de PowerShell

.$host.Version es otro método para obtener la versión del motor de PowerShell. Get-Host ofrece el mismo resultado que la variable $host, una variable completamente automatizada.

PS52> $host.Version

Producción :

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      19041  1320

Esto es bastante similar al método Get-host.

Use el registro para obtener la versión de PowerShell

También puede verificar el registro solo si no está interesado en iniciar PowerShell. La edición de PowerShell se almacena en la ruta de la clave de registro de la siguiente manera HKLM:\SOFTWARE\Microsoft\PowerShell\3\ y también como un valor. Se puede usar Get-ItemProperty para hacer referencia al valor de PowerShellVersion en esta entrada de registro.

PS51> (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

Producción :

5.1.19041.1
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.