Magic Quadrant™ para la gestión de acceso privilegiado 2025: Netwrix reconocida por cuarto año consecutivo. Descarga el informe.

Plataforma
Centro de recursosBlog
Verificar, Actualizar y Elegir una Versión de PowerShell

Verificar, Actualizar y Elegir una Versión de PowerShell

Oct 23, 2024

PowerShell ha evolucionado desde ser exclusivo para Windows (5.1) a ser multiplataforma con PowerShell 7, construido sobre .NET para Windows, macOS y Linux. Conocer tu versión es clave para la compatibilidad, seguridad y acceso a características modernas como el procesamiento paralelo. Verifica tu versión con $PSVersionTable.PSVersion o consultas en el registro. Windows PowerShell 5.1 sigue preinstalado, pero PowerShell 7 debe instalarse manualmente a través de Microsoft Store, Winget o MSI. Ejecutar ambos simultáneamente ayuda a mantener flujos de trabajo antiguos y modernos.

Es posible que desee saber la versión de PowerShell instalada en su máquina. Aunque los usuarios novatos pueden ir a Programas en el Panel de Control para verificar la versión de PowerShell, a menudo es bastante decepcionante cuando no encuentran PowerShell listado como un programa allí. En su lugar, necesitará recurrir a otros métodos para encontrar la versión de PowerShell.

Este artículo ofrece una guía completa para verificar la versión de PowerShell que está ejecutando.

Tutorial de Windows PowerShell Scripting (PDF) para Principiantes

Aprende más

Introducción a las versiones de PowerShell

PowerShell ha evolucionado de una herramienta de gestión de Windows a una shell versátil que puede utilizarse en diferentes plataformas. En particular, PowerShell Core 6.x y PowerShell 7.x lo han convertido en un potente marco de automatización y scripting multiplataforma.

Evolución de las versiones de PowerShell desde la 1.0 hasta la 7.x

En 2006, Microsoft lanzó PowerShell 1.0 como parte del marco .NET para el sistema operativo Windows, incluyendo Windows XP (SP2), Windows Server 2003 (r2 SP1) y Windows Vista. Introdujo cmdlets como Get-Process y Get-Service y fue diseñado para automatizar tareas en entornos Windows.

Versión

Descripción

PowerShell 2.0

PowerShell 2.0 llegó en 2009. Entre otras cosas, introdujo la capacidad de ejecutar comandos en máquinas remotas mediante remoting (a través de WinRM) y la aplicación Integrated Scripting Environment (ISE).

PowerShell 3.0

PowerShell 3.0, lanzado en 2012, introdujo flujos de trabajo, nuevos cmdlets y trabajos programados para la automatización de tareas.

PowerShell 4.0

PowerShell 4.0 (2013), 5.0 (2016) y 5.1 (2016) tuvieron mejoras en cmdlets, rendimiento y DSC. Se añadieron Clases y Enums al lenguaje de scripts. Con PowerShell 5.1, hubo un cambio hacia el código abierto y PowerShell Core.

PowerShell Core 6.x

Luego, PowerShell Core 6.x (2018) se convirtió en código abierto y se trasladó a GitHub. Era multiplataforma, funcionando en Windows, macOS y Linux. No solo eso, sino que también fue diseñado para entornos heterogéneos y la nube híbrida.

PowerShell 7.x

PowerShell 7.x (2020) es la versión más reciente. Unifica Windows PowerShell y PowerShell Core en una única corriente de versión, soporta la paralelización de pipeline y mejora el manejo de errores entre otras cosas.

¿Por qué identificar la versión correcta de PowerShell

Antes de usar PowerShell para tus tareas cotidianas, una pregunta que puedes hacerte es, ¿qué versión de PowerShell tengo? Tener una respuesta a esta pregunta es importante porque tu versión de PowerShell determina qué cmdlets y funciones puedes utilizar. Por esta y muchas otras razones, debes identificar qué versión de PowerShell necesitas para gestionar tus tareas.

  • Compatibilidad. Algunos scripts o módulos requieren cmdlets específicos o características que solo están disponibles en las versiones más recientes de PowerShell. Las versiones modernas de PowerShell admiten scripts antiguos, pero con advertencias de obsolescencia para las características desactualizadas.
  • Precisión en los resultados. Algunas versiones de PowerShell pueden no proporcionar los resultados precisos que está buscando, como cuando debe cumplir con un requisito específico o un prerrequisito para ejecutar un comando o cargar un módulo.
  • Soporte multiplataforma. Para Linux o macOS, necesita PowerShell Core o PowerShell 7.x.
  • Funciones avanzadas. Las versiones anteriores no admiten las últimas características, como el paralelismo de tuberías, ?? (operador de fusión nula) y ForEach-Object -Parallel, que están disponibles en PowerShell 7.x.
  • Integración con la nube y DevOps. Las versiones recientes de PowerShell ofrecen capacidades de integración mejoradas con plataformas en la nube, como Azure, AWS, herramientas de DevOps y pipelines de CI/CD, facilitando la gestión basada en la nube.
  • Requisitos de seguridad. Se recomiendan las últimas versiones de PowerShell por razones de seguridad y cumplimiento.
  • Configuración del entorno. Para utilizar herramientas o automatizaciones en todo el entorno, conocer la versión ayuda a garantizar la compatibilidad entre sistemas.

Diferencias entre Windows PowerShell y PowerShell Core

Las diferencias clave entre Windows PowerShell y PowerShell Core son:

Característica

Windows PowerShell

PowerShell Core

Platform

Solo para Windows

Multiplataforma (Windows, macOS, Linux)

Versión

Última versión mayor: 5.1

Lanzamientos en curso (7.x y posteriores)

Framework

Basado en .NET Framework

Basado en .NET Core (ahora .NET)

Modelo de lanzamiento

Solo correcciones de errores/seguridad

Desarrollo activo con nuevas características

Instalación

Viene preinstalado con el sistema operativo Windows

Debe descargarse por separado desde GitHub o gestores de paquetes

Compatibilidad hacia atrás

Integración estrecha con Windows (p. ej., WMI, COM)

Puede tener características específicas limitadas de Windows

Rendimiento

Más rápido en algunos escenarios nativos de Windows

Mejor rendimiento en múltiples plataformas

Compatibilidad de módulos

Admite muchos módulos heredados

Algunos módulos antiguos pueden no ser compatibles

Soporte de nube/contenedor

Soporte limitado para contenedores y entornos en la nube

Mejor soporte para contenedores y la nube

Open Source

Propietario

Código abierto (licencia MIT)

Si utiliza características o módulos específicos de Windows antiguos, Windows PowerShell es una mejor opción. Pero para el desarrollo multiplataforma y flujos de trabajo basados en la nube, PowerShell Core es el más adecuado.

Cómo verificar la versión de PowerShell

Conocer la versión instalada de PowerShell es importante por varias razones prácticas, ya que su versión determina qué cmdlets y funciones están disponibles para su uso. Diferentes versiones pueden ofrecer soporte variado para diferentes scripts, módulos y plataformas. Para un funcionamiento fluido de PowerShell, debe conocer la versión de PowerShell que está utilizando, sus limitaciones y sus características principales.

Comprobar la versión de PowerShell es una tarea sencilla. La forma más fácil de verificar la versión de PowerShell es a través del propio PowerShell. Puedes mostrar la versión de PowerShell que estás utilizando, por ejemplo, mediante el PSVersionTable.PSVersion o el cmdlet Get-Host.

Comando de Versión de PowerShell: $PSVersionTable.PSVersion

Este es el método más confiable para obtener su versión de PowerShell ya que devuelve información específicamente sobre la versión del motor de PowerShell.

      $PSVersionTable.PSVersion
      
Image

Este cmdlet muestra la versión mayor, menor y de compilación (parche) de PowerShell instalado. El número de revisión se muestra si es aplicable.

Si desea ver más detalles además de la versión, pruebe el siguiente cmdlet:

      $PSVersionTable
      
Image

$PSVersionTable muestra varias propiedades específicas del entorno además de la versión.

  • PSVersion – Muestra la versión de PowerShell
  • PSEdition – Muestra si es Desktop (Windows PowerShell) o Core (PowerShell Core / PowerShell 7+)
  • WSManStackVersion – Muestra la versión de WS-Management (utilizado para la administración remota)
  • PSRemotingProtocolVersion – Versión del protocolo de remoting
  • SerializationVersion – Se utiliza para mantener la compatibilidad con versiones anteriores en sesiones remotas

Cómo obtener la versión de PowerShell con el comando Get-Host

Un host es un programa que aloja el motor de PowerShell. Y puedes tener un host con una versión que es independiente de PowerShell.

El siguiente cmdlet muestra la versión de PowerShell que estás ejecutando, pero esta versión puede ser inexacta ya que refleja la versión del host, no la del motor.

      Get-Host
      
Image

A menudo, la versión de PowerShell coincide con la del host. Además de la versión del host, este cmdlet también muestra el nombre del host, la cultura actual y la cultura de la interfaz de usuario.

El comando Get-Host no funciona de manera remota y siempre devuelve la versión 1.0.0.0.

Comandos $Host y $Host.Version

$host es una variable automática que muestra la misma información que el cmdlet Get-Host.

      $host
      
Image

Si está buscando la versión de PowerShell, $host no se recomienda por las mismas razones que Get-Host. Lo mismo se aplica para $host.Version.

      $host.Version
      
Image

Muestra la versión de la aplicación anfitriona que está ejecutando la sesión actual de PowerShell, aunque en un formato diferente.

Editor del Registro

Puede verificar la versión de PowerShell a través del Editor del Registro de cualquiera de las siguientes maneras:

  • Utilice el cmdlet Get-ItemProperty para consultar el registro por la versión de PowerShell instalada.
  • Vaya al Editor del Registro y localice manualmente las rutas para los detalles de la versión de PowerShell.

Via Cmdlets

Para la versión 5 de PowerShell

Puede ver la clave de registro PowerShellVersion con el cmdlet 'Get-ItemProperty'. Es como sigue:

      (Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion
      
Image
Para la versión 7 de PowerShell

Si tiene PowerShell 7 o posterior instalado, utilice el siguiente cmdlet:

      Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\PowerShellCore' | Select-Object -Property PSVersion
      

Método manual

Puede obtener la configuración de PowerShell y la información de la versión en el Editor del Registro.

Para la versión 5 de PowerShell

En el editor del Registro, expanda Computadora > HKEY-LOCAL-MACHINE > SOFTWARE > Microsoft > PowerShell > 3 > PowerShellEngine. En el panel adyacente, encontrará información que incluye el número de versión de PowerShell.

Image
Para la versión 7 de PowerShell

Si tiene PowerShell 7 instalado, vaya a la siguiente ruta en el Editor del Registro para verificar la versión:

Computer > HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > PowerShellCore > InstalledVersions > 31ab5147-9a97-4452-8443-d9709f0516e1

Técnicas avanzadas para la identificación de versiones

Encuentre la versión de PowerShell en sistemas remotos

Requisitos previos

Se deben cumplir los siguientes requisitos previos antes de poder verificar la versión de PowerShell en una máquina remota.

  • Windows Management Framework (WMF) está instalado y habilitado en la máquina remota.
  • WinRM (Windows Remote Management) is configured and running on both the local and remote machines.
    Run ‘winrm quickconfig’ to prepare a machine to be remotely accessed via PowerShell.
  • Tienes los permisos necesarios en la máquina remota.

Compruebe la versión de PowerShell en una máquina remota

Utilice el cmdlet Invoke-Command con $PSVersionTable para verificar la versión de PowerShell instalada en una computadora remota.

      Invoke-Command `
  -ComputerName WS16-DC1 `
  -ScriptBlock { $PSVersionTable.PSVersion } `
  -Credential $cred
      

Nota:

  1. En este comando, reemplace el ComputerName (WS16-DC1) con el nombre específico de su computadora, y las credenciales debajo de $cred con un nombre de usuario y contraseña válidos.
  2. Al utilizar comas para separar valores, puedes manejar varios ordenadores remotos a la vez de manera efectiva.

En el cmdlet anterior:

  • Invoke-Command se utiliza para ejecutar comandos en un ordenador remoto.
  • ComputerName WS16-DC1 especifica el nombre del equipo remoto (WS16-DC1 en este caso).
  • ScriptBlock {$PSVersionTable.PSVersion} es el bloque de script que se ejecuta en el ordenador remoto para obtener la información de la versión de PowerShell.
  • La credencial $cred especifica las credenciales para autenticarse en el ordenador remoto, donde $cred es un objeto que contiene credenciales válidas (como un nombre de usuario y contraseña).

Comparación de la versión de PowerShell en diferentes sistemas operativos Windows

Esta tabla enumera las versiones de PowerShell preinstaladas con diferentes sistemas operativos Windows:

Versión de PowerShell

Fecha de lanzamiento

Windows OS Soportado por defecto

PowerShell 1.0

Noviembre 2006

Windows Server 2003 SP1
Windows XP SP2
Windows Vista

PowerShell 2.0

Octubre 2009

Windows Server 2008 R2
Windows 7

PowerShell 3.0

Septiembre 2012

Windows Server 2012
Windows 8

PowerShell 4.0

Octubre 2013

Windows Server 2012 R2
Windows 8.1

PowerShell 5.0

Febrero de 2016

Windows Server 2016
Windows 10

PowerShell 5.1

Agosto 2016

Windows Server 2016
Windows 10 anniversary update

PowerShell Core 6.0

Enero 2018

Windows Server 2012 R2
Windows Server 2012
Windows Server 2016
Windows 10
Windows 8.1
Windows 7 con Service Pack 1

Fuente: https://superops.com/powershell-version

PowerShell 5.1 es la última versión instalada por defecto en clientes y servidores de Windows. Ha sido sucedida por PowerShell Core (ahora PowerShell 7), que es un producto separado. No viene preinstalado sino que debe instalarse manualmente.

Instalar una versión más reciente no reemplaza la versión preinstalada por defecto. Por ejemplo, PowerShell 7.x y Windows PowerShell 5.1 pueden coexistir.

Actualizar o instalar versiones más recientes de PowerShell

Para mantenerse al día con Windows PowerShell 5.1 en Windows 10 y 11, siempre ejecute actualizaciones del sistema para mantener su PC actualizado.

PowerShell Core (versión 7) es un producto diferente de Windows PowerShell y debe instalarse manualmente a través de cualquiera de los siguientes métodos:

  • Descargue y ejecute el archivo instalador
  • Ejecute un comando desde PowerShell en su computadora

Como recomendación, mantenga tanto Windows PowerShell como PowerShell Core en su computadora para aprovechar al máximo PowerShell. Tenga en cuenta que los scripts antiguos pueden no funcionar en versiones más recientes y los scripts actuales pueden no funcionar en versiones anteriores.

Puede descargar e instalar una versión más reciente de PowerShell de cualquiera de estas maneras.

Instalar PowerShell usando Microsoft Store

En Windows 10 y Windows 11, abra la Microsoft Store y busque PowerShell.

La última versión de la aplicación PowerShell aparece en los resultados de búsqueda como PowerShell (publicado por Microsoft Corporation). Haz clic para ver sus detalles, donde también puedes hacer clic en Get para descargarla e instalarla.

Image

Instalar PowerShell usando Winget

El gestor de paquetes WinGet instala la última versión de PowerShell desde la línea de comandos.

Busca PowerShell usando Winget

Para ver una lista de paquetes relacionados con PowerShell, con sus números de versión e IDs, utilice el siguiente cmdlet:

      winget search PowerShell
      
Image
Instalar PowerShell

Localice el paquete de PowerShell requerido e instálelo utilizando su ID. El ID para PowerShell es Microsoft.PowerShell.

Para instalar la última versión de PowerShell, utilice el siguiente cmdlet:

      winget install Microsoft.PowerShell
      
Image

Instalar PowerShell usando paquete MSI

Otro método es descargar PowerShell de GitHub y usar el MSI para la instalación. Visite la página oficial de PowerShell GitHub release page para localizar la versión más reciente de PowerShell (como PowerShell 7.x). Desplácese hacia abajo hasta la sección de Assets de esta versión y descargue el paquete MSI.

El paquete tarda un tiempo en descargarse. Una vez descargado, ejecute el instalador para instalar PowerShell.

Gestión de múltiples versiones de PowerShell

Puede usar el clásico Windows PowerShell (generalmente la versión 5.1) y el moderno PowerShell Core (versiones 6.x y 7.x) en la misma máquina sin conflictos.

Un caso de uso común para gestionar múltiples versiones de PowerShell es cuando diferentes entornos o scripts requieren versiones específicas.

Aquí le mostramos cómo puede administrar múltiples versiones de PowerShell en su sistema.

Ejecutar una versión específica desde el cuadro de diálogo Ejecutar o la línea de comandos

Abra el cuadro de diálogo Ejecutar y especifique la ruta al archivo exe de una versión de PowerShell para iniciarlo (vea el ejemplo a continuación).

También puedes ejecutar una versión específica de PowerShell especificando su ruta en PowerShell, como se proporciona en el siguiente ejemplo. Ten en cuenta que este método solo es válido para PowerShell 7, donde puedes alternar entre versiones.

Ejemplo:

  • PowerShell 5.1
      C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
      
  • PowerShell 7
      C:\Program Files\PowerShell\7\pwsh.exe
      

Perfiles y configuración de PowerShell

Un perfil de PowerShell es un script de PowerShell que se ejecuta cada vez que inicias PowerShell, excepto cuando usas la bandera -NoProfile.

Cada versión de PowerShell tiene su propio archivo de perfil. Si desea que ciertas configuraciones o ajustes estén disponibles en una versión y no en otra, tiene la opción de configurar el perfil por separado para cada versión.

Localice el archivo de perfil manualmente

  • El perfil de PowerShell 5.1 podría estar en: C:\Users\<username>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
  • El perfil de PowerShell 7+ podría estar en: C:\Users\<username>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

Localice el archivo de perfil a través de PowerShell

También puedes usar PowerShell en sí para recuperar el perfil de PowerShell. Simplemente utiliza $Profile para localizar la ruta del perfil, ya que la variable $Profile almacena la ruta.

      $Profile
      
Image

Esto muestra la ruta al perfil de la aplicación anfitriona de PowerShell del usuario actual. Puede canalizar la variable $Profile al cmdlet Get-Member para obtener rutas adicionales.

      $Profile | Get-Member -MemberType NoteProperty
      
Image

Prueba de compatibilidad con scripts y módulos antiguos

Es importante probar la compatibilidad con scripts y módulos antiguos en PowerShell al actualizar a versiones más recientes o integrar código heredado.

A continuación se presentan algunas formas de probar la compatibilidad con scripts y módulos antiguos.

Utilice Windows PowerShell y PowerShell Core lado a lado

Puede ejecutar tanto Windows PowerShell como PowerShell Core en la misma máquina. Pruebe su script o módulo en ambos entornos para comprobar la compatibilidad. Recuerde que la versión 5.1 es la última versión principal de Windows PowerShell mientras que la versión 7 es la versión actual de PowerShell Core.

Un ejemplo es como:

      ./your_script.ps1
      

./ indica que el script se encuentra en el directorio actual mientras que your_script.ps1 es el script que intentas ejecutar. .ps1 es la extensión predeterminada para los archivos de script de PowerShell.

Verificar la versión de PowerShell

Es una buena idea saber para qué versión de PowerShell se escribió inicialmente tu script y en qué versión estás intentando ejecutarlo.

Utilice el Cmdlet Test-ModuleManifest

El cmdlet Test-ModuleManifest se utiliza para verificar que un manifiesto de módulo de PowerShell (.psd1 file) es válido y está configurado correctamente. También comprueba el archivo en busca de dependencias y problemas de compatibilidad.

      Test-ModuleManifest -Path "C:\Path\To\YourModule.psd1"
      

El parámetro -Path especifica la ruta al archivo .psd1.

Utilice el Cmdlet Get-Command para verificar la disponibilidad del Cmdlet

Algunos cmdlets y parámetros pueden ser compatibles con una versión de PowerShell y no con otra. Utilice el cmdlet Get-Command para verificar la disponibilidad y sintaxis de los cmdlets que está utilizando. Aquí hay un ejemplo:

      Get-Command -Name Invoke-RestMethod -Module Microsoft.PowerShell.Utility
      

PSScriptAnalyzer para Análisis de Código Estático

PSScriptAnalyzer es una herramienta que verifica las mejores prácticas e identifica problemas de compatibilidad. Utilice el siguiente cmdlet para instalarlo y ejecutarlo:

      Install-Module -Name PSScriptAnalyzer
Invoke-ScriptAnalyzer -Path "C:\Path\To\YourScript.ps1"
      

Esta es una buena manera de detectar cualquier problema con tus scripts o cmdlets obsoletos antes de la ejecución.

Compruebe la compatibilidad con .NET

Windows PowerShell (5.1) está construido sobre .NET Framework mientras que PowerShell Core (6+) y PowerShell 7+ están construidos sobre .NET Core/.NET. En caso de que su script o módulo dependa de ensamblados .NET, asegúrese de que sean compatibles tanto con .NET Core/.NET como con .NET Framework.

Puede probar los ensamblados .NET utilizados en su script con el siguiente cmdlet:

      [System.Reflection.Assembly]::LoadFile("C:\Path\To\YourAssembly.dll")
      

Conclusión

Saber qué versión de PowerShell está instalada en su computadora es importante por varias razones. Las diferentes versiones vienen con nuevos cmdlets, características y sintaxis, por lo que conocer la versión asegura que sus scripts sean compatibles con la versión en la que los está ejecutando. PowerShell Core introdujo la compatibilidad entre plataformas, así que saber la versión instalada es clave para utilizar las características y módulos específicos de la plataforma correcta.

De todos los métodos disponibles para determinar la versión de PowerShell que se ejecuta en su computadora, $PSVersionTable es altamente recomendado. No solo es el método más confiable, sino también el más preciso para la identificación de la versión. Proporciona una visión general completa del entorno de PowerShell, ayudándole a asegurar que los scripts sean compatibles con la versión y entorno específicos.

Debe actualizar regularmente PowerShell para asegurarse de que se instalen los parches de seguridad críticos que protegen contra vulnerabilidades encontradas en versiones anteriores. Además, la actualización regular garantiza el acceso a las últimas características, como nuevos cmdlets y mejoras multiplataforma. También garantiza un rendimiento mejorado, políticas de ejecución robustas y un soporte mejorado para la ejecución paralela y asíncrona. En resumen, actualizar a la última versión de PowerShell ayuda a crear soluciones de automatización más seguras, eficientes y escalables, al tiempo que reduce los riesgos asociados con versiones obsoletas o sin soporte.

Netwrix Directory Manager

FAQ

¿Cómo verificar la versión de powershell?

La forma más fácil de verificar la versión de PowerShell es a través del propio PowerShell. Puedes mostrar la versión de PowerShell que estás utilizando, por ejemplo, mediante el PSVersionTable.PSVersion o el cmdlet Get-Host.

Compartir en

Aprende más

Acerca del autor

Asset Not Found

Tyler Reese

VP de Gestión de Producto, CISSP

Con más de dos décadas en la industria de la seguridad de software, Tyler Reese conoce íntimamente los desafíos de identidad y seguridad que evolucionan rápidamente a los que se enfrentan las empresas hoy en día. Actualmente, se desempeña como director de producto para el portafolio de Netwrix Identity and Access Management, donde sus responsabilidades incluyen evaluar tendencias del mercado, establecer la dirección de la línea de productos IAM y, finalmente, satisfacer las necesidades de los usuarios finales. Su experiencia profesional abarca desde la consultoría de IAM para empresas Fortune 500 hasta trabajar como arquitecto empresarial de una gran compañía de venta directa al consumidor. Actualmente posee la certificación CISSP.