¿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 Corey 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:

Versión PS Nota
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 la compilación 1709) y Windows Server 2016
PowerShell Core 6.0 y 6.1 Es la próxima versión de PowerShell multiplataforma (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 del Marco de administración de Windows (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 lanzan correcciones de errores y actualizaciones de seguridad) y se centró en multiplataforma de código abierto. Núcleo de PowerShell.

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

  1. Windows PowerShell está basado en .NET Framework (por ejemplo, PowerShell 5 requiere .NET Framework v4.5, asegúrese de que esté instalado). Núcleo de PowerShell está basado en .Net Core;
  2. Windows PowerShell solo funciona en sistemas operativos Windows, mientras que Núcleo de PowerShell 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 scripts y cmdlets de PS. (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 el editor de PowerShell ISE para editar scripts de PowerShell Core (pero se puede usar el código de Visual Studio);
  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.

Buscar la versión de PowerShell en Windows

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)

$ PSVersionTable

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 HKLMSOFTWAREMicrosoftPowerShell3PowerShellEngine usando el cmdlet Get-ItemProperty:

(Get-ItemProperty -Path HKLM:SOFTWAREMicrosoftPowerShell3PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

comprobar la versión de powershell en el registro

El método descrito anteriormente funciona en Windows Server 2012 / Windows 8 o más reciente.

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:SOFTWAREMicrosoftPowerShell1PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

obtener 'PowerShellVersion' en Windows Server 2008 R2 / Winn 7

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

(Get-ItemProperty -Path HKLM:SOFTWAREMicrosoftPowerShellCoreInstalledVersions* -Name 'SemanticVersion').SemanticVersion

Verificar la versión de PowerShell en computadoras remotas

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

Puede instalar la versión de PowerShell en una computadora remota a través de PowerShell Remoting usando el Invocar-Comando cmdlet:

Invoke-Command -ComputerName mun-dc01 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred
Obtenga la versión de Powershell para computadora remota usando invoke-command

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

Puede obtener las versiones instaladas de PowerShell en varios equipos mediante el siguiente script (la lista de equipos remotos debe especificarse como un archivo de texto sin formato):

Invoke-Command -ComputerName (Get-Content C:PShost_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=woshub,dc=com’ ).Name
Invoke-Command-ComputerName $adcomputer -Scriptblock{$PSVersionTable.psversion} -ErrorAction SilentlyContinue

Si su secuencia de comandos de PowerShell usa características de una versión de PS específica, puede forzar que su secuencia de comandos cambie a una versión de PowerShell diferente. Por ejemplo, para ejecutar una consola en modo PowerShell v3, ejecute este comando (.Net Framework 3.5 debe estar instalado):

PowerShell.exe -version 3

Puede ser importante conocer su versión de PowerShell si ejecuta scripts o comandos que utilizan los cmdlets o las funciones de una versión de PS específica. Si desea detectar la versión de PowerShell instalada en el script y usar cmdlets basados ​​en él, puede ejecutar el siguiente script 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"
}

 

Artículos Interesantes