Búsqueda de sitios web

¿Cómo verificar la versión de PowerShell instalada?


En este artículo aprenderemos qué versiones de PowerShell existen, cuál es la diferencia entre

Windows PowerShell

y

PowerShell Core

y cómo verificar la versión de PowerShell instalada en una computadora local o remota.

Historial y Versiones de Windows PowerShell y PowerShell Core

PowerShell se instala de forma predeterminada en todas las versiones de Windows a partir de Windows 7 SP1 y Windows Server 2008 R2 SP1. La siguiente tabla muestra la lista de todas las versiones de PowerShell:

PowerShell 1.0

Se puede instalar manualmente en Windows Server 2003 SP1 y Windows XP

PowerShell 2.0

Windows Server 2008 R2 y Windows 7

PowerShell 3.0

Windows 8 y Windows Server 2012

PowerShell 4.0

Windows 8.1 y Windows Server 2012 R2

PowerShell 5.0

Preinstalado en Windows 10 RTM y actualizado automáticamente a 5.1 a través de Windows Update

PowerShell 5.1

Está integrado en Windows 10 (a partir de Build 1709) y Windows Server 2016

PowerShell Core 6.0 / 6.1

Es la próxima versión multiplataforma de PowerShell (basada en .NET Core) que se puede instalar en todas las versiones de Windows compatibles y en MacOS, CentOS, RHEL, Debian, Ubuntu, openSUSE

PowerShell Core 7.0

Es la última versión de PowerShell lanzada en marzo de 2020 (se usa .NET Core 3.1 en lugar de .NET Core 2.x)

Puede instalar manualmente una versión más reciente de PowerShell en versiones anteriores de Windows. Para hacerlo, descargue e instale la versión apropiada de Windows Management Framework (PowerShell es parte de él).

Vale la pena señalar que en los últimos 2 años, Microsoft suspendió el desarrollo del clásico Windows PowerShell (solo se publican correcciones de errores y actualizaciones de seguridad) y se centró en PowerShell Core multiplataforma de código abierto.

¿Cuál es la diferencia entre Windows PowerShell y PowerShell Core?

  1. Windows PowerShell se basa en .NET Framework (por ejemplo, PowerShell 5 requiere .NET Framework v4.5, asegúrese de que esté instalado). PowerShell Core se basa en .Net Core;

  2. Windows PowerShell funciona solo en sistemas operativos Windows, mientras que PowerShell Core es multiplataforma y también puede funcionar en Linux;

  3. PowerShell Core no es totalmente compatible con Windows PowerShell; sin embargo, Microsoft está trabajando para mejorar la compatibilidad con versiones anteriores de cmdlets y scripts de PS anteriores. (se recomienda probar sus antiguos scripts de PS1 antes de pasar a PowerShell Core). PowerShell Core 7 proporciona la mayor compatibilidad con Windows PowerShell;

  4. No puede usar PowerShell ISE Editor para editar scripts de PowerShell Core (pero se puede usar Visual Studio Code);

  5. Dado que Windows PowerShell ya no está desarrollado, se recomienda que comience a migrar a PowerShell Core.

¿Cómo obtener la versión de PowerShell desde la consola?

La forma más fácil de averiguar qué versión de PowerShell está instalada en su computadora es usar el comando:

host

Compruebe el valor de la propiedad Versión.

La siguiente captura de pantalla se realizó en Windows 10 con PowerShell 5.1 instalado de forma predeterminada, como en Windows Server 2016.

o

$PSVersionTable

Solo puede obtener el valor de la versión de PowerShell:

$PSVersionTable.PSVersion.major

(en este ejemplo, obtuvimos PSVersion 2.0 en Windows Server 2008 R2 limpio)

El comando $PSVersionTable funciona correctamente en PowerShell Core en diferentes sistemas operativos.

También puede averiguar la versión de PowerShell instalada a través del registro. Para hacerlo, obtenga el valor del parámetro PowerShellVersion en la clave de registro

HKLM\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine

utilizando el cmdlet Get-ItemProperty:

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

El método descrito anteriormente funciona en Windows Server 2012/Windows 8 o posterior.

En Windows Server 2008 R2/Windows 7, puede obtener el valor del parámetro de registro en otra clave de registro:

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

Para obtener la versión instalada de PowerShell Core, use el siguiente comando:

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions* -Name 'SemanticVersion').SemanticVersion

Comprobar la versión de PowerShell en equipos remotos

Para verificar la versión de PowerShell en un host remoto, use el valor de la variable de entorno $PSVersionTable u obtenga la información del registro directamente. Otros métodos pueden devolver datos incorrectos.

Puede obtener la versión de PowerShell instalada en una computadora remota a través de PowerShell Remoting usando el cmdlet Invoke-Command:

Invoke-Command -ComputerName mun-dc01 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred

Major Minor Build Revision PSComputerName
----- ----- ----- -------- --------------
5 1 14393 3383 mun-dc01

Puede obtener las versiones de PowerShell instaladas en varias computadoras usando el siguiente script (la lista de computadoras remotas debe especificarse como un archivo de texto sin formato):

Invoke-Command -ComputerName (Get-Content C:\PS\host_list.txt) -
ScriptBlock{$PSVersionTable.PSVersion} | Select PSComputerName, @{N="PS Version";E={$_.Major}}

O puede obtener una lista de equipos de dominio a través de Get-ADComputer y verificar de forma remota las versiones de PowerShell en ellos:

$adcomputer=(Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -SearchBase ‘OU=servers,OU=Munich,dc=a-d,dc=com’ ).Name
Invoke-Command-ComputerName $adcomputer -Scriptblock{$PSVersionTable.psversion} -ErrorAction SilentlyContinue

Si su secuencia de comandos de PowerShell utiliza características de una versión específica de PS, puede obligar a su secuencia de comandos a cambiar a una versión diferente de PowerShell. Por ejemplo, para ejecutar una consola en modo PowerShell v3, ejecute este comando (se debe instalar .Net Framework 3.5):

PowerShell.exe -version 3

Puede ser importante conocer su versión de PowerShell si ejecuta scripts o comandos que usan los cmdlets o funciones de una versión específica de PS. Si desea detectar la versión de PowerShell instalada en la secuencia de comandos y usar cmdlets basados en ella, puede ejecutar la siguiente secuencia de comandos de PS:

$ps_version = $PSVersionTable.PSVersion.major
if ( $ps_version -eq "2” )
{
write "You are using Powershell 2.0"
}
elseif ( $ps_version -eq "5" )
{
write " You are using Powershell 5"
}

En el próximo artículo, veremos cómo actualizar la versión de PowerShell en Windows.

Artículos relacionados