Microsoft vient de livrer PowerShell 7, une mise à jour majeure de son outil d'automatisation multiplateforme et framework de configuration. La parallélisation du pipeline et l’introduction de nouveaux opérateurs font partie des points forts de cette nouvelle version.

PowerShell 7 introduit le paramètre Parallel pour la cmdlet ForEach-Object, laquelle permet d'exécuter un bloc de script en parallèle pour chaque élément d'une collection en utilisant la syntaxe ForEach-Object -Parallel.

PowerShell 7 introduit également de nouveaux opérateurs, dont un opérateur ternaire identifié comme a ? b :c, des opérateurs de chaîne de pipeline || et && et des opérateurs d’assignation nulle et de coalescence dont ?? et ??=.

Parmi les autres capacités de PowerShell 7 on peut citer :

- Une vue simplifiée et dynamique des erreurs.

- Une cmdlet GetError pour faciliter les recherches d'erreurs.

- Une couche de compatibilité pour l'importation de modules dans une session Windows PowerShell implicite.

- L'appel de ressources DSC (Desired State Configuration) directement à partir de PowerShell 7.0. Cette fonctionnalité est encore expérimentale.

- Des notifications automatiques de nouvelle version.

PowerShell fonctionne sous Windows, Linux ou MacOS et l’outil est optimisé pour traiter des données structurées de type JSON, CSV et XML. Un shell en ligne de commande et un langage de script orienté objet sont également disponibles.

PowerShell 7 s'installe dans un nouveau répertoire et fonctionne en parallèle avec Windows PowerShell 5.1. Il s'agit d'une mise à jour en place pour PowerShell Core 6.x. Un paquet binaire de PowerShell 7 est installable à partir de GitHub. On trouve aussi sur le référentiel des images de conteneurs Docker.

PowerShell 7 fait suite à l'annonce, il y a trois ans, de PowerShell Core 6, une édition communautaire de l'outil, basée sur le noyau .NET open source, à partir duquel a été introduit le support multi-plateforme. Selon Microsoft, « PowerShell 7 marque le passage de .Net Core 2.x à .NET Core 3.1 », ce qui signifie qu’il va permettre une plus grande compatibilité, et notamment une compatibilité ascendante, avec les modules PowerShell existants de Windows.