Lo que viene en PowerShell 7.1 – CloudSavvy IT

Logotipo de Powershell

Puede que PowerShell 7.1 no parezca que tiene grandes cambios a primera vista, pero hay muchas más cosas en marcha de lo que uno puede esperar. También hay una serie de funciones y herramientas muy útiles que pueden mejorar sus secuencias de comandos y ayudarlo a desarrollar secuencias de comandos aún mejores. PowerShell 7.1 se lanzó el 11/11/2020 y muchos miembros de la comunidad de TI lo están adoptando rápidamente. Este artículo incluye una serie de mejoras y mejoras, pero de ninguna manera es una colección completa de todas las mejoras.

Cambios arquitectónicos

La mayor mejora es la de PowerShell 7.1 que se basa en .NET 5. Esta es una versión importante que continúa el viaje de unificación en el que ha estado .NET con .NET y .NET Core tradicionales. Con .NET 5 se realizan los primeros pasos hacia un núcleo unificado. PowerShell 7.1 aprovecha las numerosas mejoras de rendimiento y de lenguaje.

Módulos principales actualizados y mejoras de carga

PowerShell 7.1 incluye varias actualizaciones del módulo principal. En particular, PSReadLine 2.1.0 ahora incluye IntelliSense predictivo, que es un motor de predicción de sintaxis similar a una concha de pescado. Además, ha habido muchas correcciones en el modo vi y la capacidad adicional de configurar el MaximumHistoryCount desde un perfil de usuario.

Mejorar WinCompat carga del módulo, los módulos de PowerShell 7 ahora se tratan con una prioridad más alta. Esto evita la sobrescritura inadvertida de los módulos principales cuando se utiliza el WinCompat mode para permitir que los módulos no nativos de PowerShell 7 funcionen dentro de la versión actualizada de PowerShell.

Nuevas características del motor

Por supuesto, hay varias funciones básicas nuevas que son útiles. Los tres principales son:

  • PSNullConditionalOperators
  • PSUnixStat
  • Soporte TLS 1.3

Los operadores condicionales nulos se introdujeron en PowerShell 7, pero como una característica experimental. Esta característica ahora se ha generalizado y se incluye de forma predeterminada en PowerShell 7.1. Hay dos nuevos operadores que están ?? y ??=.

# This typically replaces an if null statement and will run the output if the value is null.
$Object ?? '$object contains a $null value'

# When the value of the conditional is null then, assign that object to the value on the right of the conditional.
$Object ??= 'This value is assigned on a $null $object'

A continuación, tenemos el PSUnixStat opción, este archivo indica que ahora se ha sacado de la versión experimental, pero a veces puede seguir apareciendo como experimental. Esta función solo estará disponible en sistemas Linux. Puede averiguar su estado y activar la función haciendo lo siguiente.

# Make sure this feature is enabled, will need to restart the PowerShell session
Get-ExperimentalFeature -Name 'PSUnixFileStat' | Enable-ExperimentalFeature

Esta característica le dará una nueva UnixMode propiedad que muestra información de Unix stat mando. Esto es muy útil para aquellos acostumbrados a trabajar con permisos tradicionales de Linux.

Finalmente, la compatibilidad con TLS 1.3 ahora se incluye en varios cmdlets web, como Invoke-RestMethod y Invoke-WebRequest. Para aquellos que quieran utilizar las mejoras de rendimiento y seguridad que se incluyen en esta nueva versión de TLS y puedan interactuar con un punto final capaz de eso, esta será una adición muy útil. Si el sitio admite TLS 1.3, el contenido será devuelto y negociado por la nueva versión del protocolo.

Invoke-RestMethod -Uri '<https://mysite.com>' -SslProtocol Tls13

Mejoras adicionales

Hay un puñado de características y mejoras adicionales que ayudan a mejorar la estructura y las habilidades de su script.

  • Dentro del entorno de Windows, Start-Process ahora, de forma predeterminada, incluirá todas las variables de entorno de la sesión actual. Solo cuando se usa el UseNewEnvironment Se creará un entorno con nuevas variables de proceso.
  • los ForEach-Object -Parallel El comando ahora reutilizará los espacios de ejecución. Esto mejorará el uso de la memoria y el rendimiento. Para aquellos preocupados porque no se está logrando el máximo aislamiento del espacio de ejecución, el parámetro UseNewRunspace ahora se incluye para crear un espacio de ejecución completamente nuevo para cada iteración de la tubería.
  • los Get-Random comando ahora incluye el Shuffle parámetro. Esto llevará una colección canalizada Get-Random o vía InputObject y devolver la misma colección pero barajada en orden.
  • Agregar el parámetro AsUTC al Get-Date mando. Esto simplifica las utilidades de conversión tradicionales necesarias, como con el [DateTime] objeto.
  • Implementar el Stop-Computer cmdlet para sistemas Linux y macOS. Esto se basa en el binario /sbin/shutdown estar disponible. Si el sistema operativo es Linux, el argumento que se pasa es now y si el sistema operativo es macOS, el argumento que se pasa es -P now.
  • Similar a Stop-Computer, Restart-Computer ahora está implementado para sistemas Linux y macOS. Esto usa el binario /sbin/shutdown y pasa el argumento de -r now.

Cambios importantes

Finalmente, hay un puñado de cambios importantes. Hay más en la lista, pero estos dos pueden afectar los scripts más que otros.

  • El cambio de nombre de FromUnixTime a UnixTimeSeconds sobre el Get-Date cmdlet para permitir la entrada de tiempo de Unix puede afectar a los scripts que usan esta función y deberán actualizarse.
  • No envuelva el resultado de la devolución a PSObject al convertir ScriptBlock en tipos delegados. Esta es una situación de caso límite cuando se lanza un bloque de script y desea que el tipo de retorno sea el objeto original y no se transmita a un PSObject.

Conclusión

Puede que PowerShell 7.1 no parezca que ha introducido grandes características nuevas, pero hay muchas mejoras incrementales e importantes mejoras en el motor de backend. El ecosistema y el lenguaje de PowerShell continúan mejorando con cada iteración y se está convirtiendo rápidamente en un lenguaje popular y básico para los administradores de sistemas en todas partes.

Deja un comentario

En esta web usamos cookies para personalizar tu experiencia de usuario.    Política de cookies
Privacidad