Ross Helen, Getty Images/iStockphoto

El lenguaje de programación PowerShell (PS) de Microsoft ha pasado por varias revisiones en los últimos años. Junto con los avances en las funciones admitidas en los sistemas operativos Windows más nuevos, PowerShell se ha vuelto de código abierto para incluir soporte para Linux y macOS y movió su sitio de desarrollo a GitHub para aumentar el soporte de la comunidad de desarrolladores, programadores y administradores de TI de todo el mundo.

VER: Cómo Microsoft Office es útil para los desarrolladores (PDF gratuito) (República Tecnológica)

Dado que el desarrollo de la próxima versión, PowerShell 7.0, está completo, Microsoft lo ha puesto a disposición en su página de GitHub para todos los usuarios, ordenados por sistema operativo.

Nuevas características introducidas por Microsoft en PowerShell 7.0. Notar: Aunque Microsoft ha completado el código de versión final, se sabe que algunas características y funciones disponibles actualmente se han visto afectadas. Se puede ver una lista de estos cambios aquí y debería corregirse en una versión futura.

Índice
  • .NET Núcleo 3.1
  • Compatibilidad con versiones anteriores de Windows PowerShell
  • Soporte a largo plazo (LTS)
  • Actualizaciones de cmdlets existentes
  • Operador, operadores
  • Gestión de identificación segura
  • Registro centralizado
  • Configuración de notificación de nueva versión
  • .NET Núcleo 3.1

    Antes de convertirse en código abierto, PowerShell era solo para Windows y se basaba en el marco .NET. Después del salto, Microsoft bifurcó el lenguaje PowerShell y cambió los marcos subyacentes a .NET Core, que es compatible con todos los sistemas operativos, lo que permite que PowerShell se ejecute en Linux y macOS, junto con Windows.

    Una advertencia sobre PowerShell Core (PSC) es que muchos cmdlets en los que confían los administradores aún no se han transferido. Sin embargo, con PS 7.0 gran parte de esa brecha se cerró y continuará con un PowerShell unificado en el futuro.

    Compatibilidad con versiones anteriores de Windows PowerShell

    Uno de los grandes objetivos de PowerShell 7 es cerrar la brecha entre las versiones de PS (sin núcleo) y PSC en lo que respecta a la cantidad de cmdlets disponibles. PowerShell solo para Windows (no central) tiene la mayor parte de los cmdlets compatibles, pero eso ha cambiado lentamente. Ahora, con el cambio de PS 7.0 a .NET Core 3.1, este cambio brinda "una compatibilidad significativamente mayor con los módulos existentes de Windows PowerShell", según Microsoft. Esto incluye aquellos que requieren funcionalidad de GUI nativa de Windows y módulos de gestión de funciones.

    Soporte a largo plazo (LTS)

    Microsoft generalmente admite aplicaciones durante un período de tiempo y luego pasa a la versión más nueva de la aplicación, eliminando el soporte para versiones anteriores, y PowerShell no es ajeno a esto; sin embargo, pasar a .NET también traerá la cadencia de soporte que Microsoft ha establecido con esta línea de productos. Los borradores estarán disponibles mensualmente para comentarios anticipados. Lo que es más importante, las versiones LTS serán compatibles durante tres años después de la versión inicial en comparación con las versiones actuales, que solo son compatibles durante tres meses después de que esté disponible una versión LTS actual o posterior.

    Actualizaciones de cmdlets existentes

    Si bien hay una serie de nuevas incorporaciones a PS 7.0, algunas de las actualizaciones más notables de los cmdlets existentes incluyen actualizaciones de parámetros que permiten a los usuarios trabajar con objetos, ejecutar funciones y usar operadores de formas más útiles.

    El cmdlet ForEach-Object, que se usa para iterar los elementos de una colección, ahora incluye los parámetros -Parallel y -ThrottleLimit, que se usan para procesar conjuntos de datos a través del paralelismo y pueden limitar, respectivamente, la cantidad de bloques ejecutados en paralelo.

    El cmdlet Get-Error, de forma predeterminada, proporciona una descripción general del último error que ocurrió. Incluye una vista completamente detallada del error calificado, incluidas las excepciones. Además, cuando se ejecuta con el parámetro -Más nuevo seguido de un número, se mostrarán los últimos errores detectados, en correlación con el número ingresado.

    Por ejemplo, ejecutar el siguiente cmdlet generará los últimos 5 errores informados en la sesión:

    Get-Error - Los 5 más nuevos

    Notar: PS 7 tiene una nueva vista predeterminada cuando muestra errores llamada ConciseView, de Microsoft. ConciseView mostrará los errores en una sola línea, a diferencia de la vista multicolor de varias líneas que los usuarios de PS están acostumbrados a ver cuando se produce un error. ConciseView solo se aplica a los errores que ocurren en la terminal; los errores que se produzcan en los scripts o durante el análisis siempre se mostrarán en varias líneas.

    Operador, operadores

    Un nuevo operador incluido, y muy útil, es el operador ternario que funciona de manera muy similar a una declaración if-else, pero más simple, al comparar dos expresiones contra su condición para ver si es verdadera o falsa. En el siguiente ejemplo, usando el cmdlet Test-Path, si la ruta a la que se hace referencia existe, el resultado devolverá "existe"; sin embargo, si no existe, regresará como "no existe".

    Ruta de prueba "C: Usuarios"? "existe": "no existe"

    Otra adición extremadamente útil es el operador de la cadena de tuberías. Estos vienen en forma de "&&" y "| |", y se usan para canalizar datos juntos en función de declaraciones condicionales. El operador && ejecuta la canalización a la derecha, pero solo si la canalización a la izquierda del operador se ejecutó correctamente. Posteriormente, el operador | | ejecuta la canalización a su derecha, pero solo si la canalización a su izquierda falla. También se pueden usar con comandos nativos además de cmdlets y funciones.

    Los operadores condicionales, de asignación y de combinación nula son un nuevo conjunto de operadores que se utilizan para obtener valores de los operandos evaluados. Aunque la mayoría de las veces están dirigidos a usuarios de nivel avanzado, estos nuevos operadores les permitirán simplificar la obtención de datos de funciones complejas e incluso basarlos condicionalmente, dependiendo de los conjuntos de información con los que trabajen. Microsoft ha incluido descripciones detalladas, incluidos ejemplos sobre cómo maximizar la gestión de datos a través de su guía de secuencias de comandos en línea.

    Gestión de identificación segura

    Los scripts a menudo ayudan a hacer la vida más fácil para los administradores de TI al automatizar tareas, tanto en cantidad (es decir, número de scripts para mantener) como en calidad (es decir, administración estandarizada), pero con una dependencia cada vez mayor de recursos locales, en la nube e híbridos, esto puede hacer que cualquier número de recursos requiera múltiples credenciales para funcionar incorrectamente. PowerShell ha incluido métodos para asegurar las credenciales hasta cierto punto para no incluir credenciales de texto sin formato, incrustadas en scripts.

    Yendo más allá, Microsoft está trabajando en la creación de una tienda de credenciales, que actuará como un repositorio seguro para almacenar las credenciales de administración de forma local o remota a través de la tienda, de modo que el usuario nunca tenga que ingresar sus credenciales de manera insegura.

    Registro centralizado

    La capacidad de registro de PowerShell está limitada a la máquina local. Cada vez que se ejecutan scripts y cmdlets, ya sea local o remotamente, los registros generados permanecen en el dispositivo local donde se ejecutan los cmdlets. Esto puede hacer que la clasificación de los registros para obtener comentarios sobre los problemas lleve mucho tiempo, lo que requiere que el usuario navegue por todos estos dispositivos por separado. PowerShell 7.0 estandariza la recopilación de registros a través de una política que dirige todos los registros a un sistema de destino (o servidor similar a syslog) para una administración centralizada independiente del sistema operativo.

    Configuración de notificación de nueva versión

    PowerShell 7 incluye la capacidad de notificar a los usuarios cuando hay disponible una nueva versión de PS. El comportamiento predeterminado es buscar nuevas actualizaciones una vez al día. Las actualizaciones que se entregarán dependerán del canal de notificación al que se suscriba PowerShell: canales generalmente disponibles (GA) o vista previa y versión candidata (RC).

    Esto no solo es útil para los usuarios, sino que la suscripción al canal se puede cambiar si desea probar una función experimental, o tal vez solo necesite cmdlets de soporte a largo plazo (LTS) para sus scripts de producción. Al crear la variable de entorno $Env:POWERSHELL_UPDATECHECK, se puede configurar el canal del sistema.

    Nota del editor: Este artículo se actualizó desde su versión original, publicada el 20 de noviembre de 2019, para reflejar los cambios en PowerShell 7.0 desde su lanzamiento.

    (TechRepublic en Flipboard)