Novedades de PowerShell 7.2

PowerShell 7.2 es la próxima versión de mantenimiento a largo plazo (LTS) que se basa en .NET 6.0.

PowerShell 7.2 incluye las características, las actualizaciones y los cambios importantes que se indican a continuación.

  • Nuevos paquetes de instalador universal para la mayoría de las distribuciones de Linux admitidas
  • Soporte técnico de Microsoft Update en Windows
  • Dos nuevas características experimentales
    • Compatibilidad mejorada con el paso de argumentos de comandos nativos
    • Compatibilidad con colores ANSI FileInfo
  • Finalizaciones de pestañas mejoradas
  • PSReadLine 2.1 con IntelliSense predictivo.
  • Siete características experimentales promocionadas a estándar y una eliminada
  • Separación de DSC de PowerShell 7 para habilitar futuras mejoras
  • Varios cambios importantes para mejorar la usabilidad.

Para ver la lista completa de cambios, consulte el registro de cambios en el repositorio de GitHub.

Actualizaciones de instalación

Consulte las instrucciones de instalación del sistema operativo que prefiera:

Además, PowerShell 7.2 admite las versiones ARM64 de Windows y macOS, y ARM32 y ARM64 de Debian y Ubuntu.

Para más información actualizada sobre los sistemas operativos compatibles y el ciclo de vida de soporte técnico, consulte Ciclo de vida de soporte técnico de PowerShell.

Nuevos paquetes de instalación universal para distribuciones de Linux

Anteriormente, hemos creado paquetes de instalador independientes para cada versión admitida de CentOS, RHEL, Debian y Ubuntu. El paquete del instalador universal combina ocho paquetes diferentes en uno, lo que facilita la instalación en Linux. El paquete universal instala las dependencias necesarias para la distribución de destino y crea los cambios específicos de la plataforma para que PowerShell funcione.

Soporte técnico de Microsoft Update en Windows

PowerShell 7.2 agrega soporte técnico con Microsoft Update. Al habilitar esta característica, se obtienen las actualizaciones más recientes de PowerShell 7 en el flujo de administración tradicional de Windows Update (WU), ya sea con Windows Update for Business, WSUS, SCCM o el cuadro de diálogo WU interactivo de Configuración.

El paquete MSI de PowerShell 7.2 incluye las siguientes opciones de línea de comandos:

  • USE_MU: esta propiedad tiene dos valores posibles:
    • 1 (valor predeterminado): permite actualizar mediante Microsoft Update o WSUS
    • 0: no permite actualizar mediante Microsoft Update o WSUS
  • ENABLE_MU
    • 1 (valor predeterminado): permite usar Microsoft Update para las actualizaciones automáticas o Windows Update.
    • 0: no permite usar Microsoft Update para las actualizaciones automáticas o Windows Update

Características experimentales

Las características experimentales siguientes ya son estándares en esta versión:

Las características experimentales siguientes se han agregado en esta versión:

  • PSNativeCommandArgumentPassing: cuando esta característica experimental está habilitada, PowerShell usa la propiedad ArgumentList del objeto StartProcessInfo en lugar de nuestro mecanismo actual de reconstrucción de una cadena al invocar un ejecutable nativo. La característica agrega una nueva variable automática $PSNativeCommandArgumentPassing que permite seleccionar el comportamiento en tiempo de ejecución.

  • PSAnsiRenderingFileInfo: permite la personalización de color ANSI de la información de archivo.

  • PSLoadAssemblyFromNativeCode: expone una API para permitir la carga de ensamblados desde código nativo.

Para más información sobre las características experimentales, consulte Uso de características experimentales en PowerShell.

Finalizaciones con tabulación mejoradas

PowerShell 7.2 incluye varias mejoras en la finalización con tabulación. Estos cambios incluyen correcciones de errores y mejoran la facilidad de uso.

  • Se ha corregido la finalización con tabulación para temas acerca de* no localizados (#15265) (Gracias, @MartinGC94).
  • Se ha corregido la plataforma que se trata como parámetro posicional en las finalizaciones (#14623) (Gracias, @MartinGC94).
  • Se han agregado finalizaciones para palabras clave de ayuda basadas en comentarios (#15337) (Gracias, @MartinGC94).
  • Se ha agregado la finalización para instrucciones Requires (#14596) (Gracias, @MartinGC94).
  • Se ha agregado la finalización con tabulación para el parámetro View de los cmdlets Format-* (#14513) (Gracias, @iSazonov)

IntelliSense predictivo de PSReadLine 2.1

PSReadLine 2.1 introdujo las API CommandPrediction que establecen un marco para proporcionar predicciones para la finalización con la línea de comandos. La API permite a los usuarios detectar, editar y ejecutar comandos completos en función de las predicciones correspondientes del historial del usuario.

IntelliSense predictivo está desactivado de forma predeterminada. Ejecute el comando siguiente para habilitar las predicciones:

Set-PSReadLineOption -PredictionSource History

Separación de DSC de PowerShell 7 para habilitar futuras mejoras

El módulo PSDesiredStateConfiguration se quitó del paquete de PowerShell 7.2 y ahora se publica en la Galería de PowerShell. Esto permite desarrollar el módulo PSDesiredStateConfiguration independientemente de PowerShell y los usuarios pueden combinar y buscar coincidencias con versiones de PowerShell y PSDesiredStateConfiguration para su entorno. Para instalar PSDesiredStateConfiguration 2.0.5 desde la Galería de PowerShell:

Install-Module -Name PSDesiredStateConfiguration -Repository PSGallery -MaximumVersion 2.99

Importante

Asegúrese de incluir el parámetro MaximumVersion o puede instalar la versión 3 (o superior) de PSDesireStateConfiguration que contiene diferencias significativas.

Actualizaciones del motor

  • Se ha agregado la función LoadAssemblyFromNativeMemory para cargar ensamblados en memoria desde un host nativo de PowerShell mediante la configuración dinámica. Solicitud de incorporación de cambios #14652

Últimos cambios y mejoras

  • PSDesiredStateConfiguration se quitó del paquete de PowerShell 7.2
  • Se han convertido los paquetes deb y RPM de PowerShell en universales (#15109)
  • Característica experimental PSNativeCommandArgumentPassing: utilice ArgumentList para la invocación del ejecutable nativo (#14692).
  • Asegúrese de que -PipelineVariable está establecido para todos los resultados de los cmdlets de script (#12766).
  • Se emiten advertencias si ConvertTo-Json supera el valor de -Depth (#13692).
  • Se quita el alias D de -Directory switch CL-General #15171.
  • Se mejora la detección de tipos de valor mutable (#12495).
  • Se restringe New-Object en modo NoLanguage en bloqueo (#14140).
  • Se aplica la configuración de denegación de AppLocker antes de la configuración de omisión de la directiva de ejecución (#15035).
  • Se cambia FileSystemInfo.Target de CodeProperty a un elemento AliasProperty que apunta a FileSystemInfo.LinkTarget (#16165)