Microsoft annonce la disponibilité générale de PowerShell 7.4, cette version est construite sur .NET 8 avec la dernière version de support à long terme de Microsoft (LTS), supportée pendant 3 ans.

Microsoft annonce la disponibilité générale de PowerShell 7.4 ! Cette version est construite sur .NET 8 et, de la même manière, est la dernière version de support à long terme (LTS) de Microsoft, supportée pendant 3 ans. Cette version continue de se concentrer sur l'amélioration de l'expérience shell et sur la résolution des problèmes fréquemment signalés par les clients et les partenaires.

Comment l'obtenir ?

Comme PowerShell 7 est supporté par Windows, Linux et macOS, il y a plusieurs façons de l'obtenir. Si vous avez installé la version stable précédente de PowerShell 7 (7.3) via le Windows Store ou MSI (et que vous avez choisi Microsoft Update), vous serez automatiquement mis à jour vers la version 7.4 GA.


Voici quelques nouveautés et améliorations que PowerShell 7.4 apporte :

PSResourceGet 1.0

Cette version inclut PSResourceGet, qui a été rendu généralement disponible au début de cette année. PSResourceGet remplace PowerShellGet (bien que les deux fonctionnent côte à côte pour les anciens scripts) et dans lequel seront investies les améliorations futures de l'écosystème des modules PowerShell. Cette version se concentre sur une nouvelle base de code qui est plus facile à maintenir et qui offre également de meilleures performances. En outre, ce module utilise un ensemble différent de cmdlets afin de permettre des changements de rupture qui offrent une expérience utilisateur plus intuitive.

PSReadLine 2.3

Cette version inclut la dernière version de PSReadLine qui contient un certain nombre d'améliorations et de corrections de bogues.

Nouvelles fonctionnalités stables

Le comité PowerShell a passé en revue les fonctionnalités expérimentales dans les versions préliminaires, ainsi que les commentaires de la communauté (problèmes) et la télémétrie indiquant que la fonctionnalité a été utilisée et non désactivée, et a décidé que les fonctionnalités suivantes étaient prêtes à être considérées comme stables pour cette version :

  • PSConstrainedAuditLogging Cette fonctionnalité permet à PowerShell 7 d'adhérer au mode d'audit WDAC et de consigner les événements dans le journal des événements Windows. Dans ce mode, PowerShell exécute les scripts en mode langue complète, mais enregistre les événements s'il y a une différence de comportement en mode verrouillage du système. Cela permet aux administrateurs de déployer plus facilement PowerShell 7 dans des environnements où le mode verrouillage du système est activé, en comprenant quels scripts doivent être modifiés pour s'exécuter dans ce mode.

  • PSCustomTableHeaderLabelDecoration Un retour d'expérience fréquent de la part des utilisateurs est qu'avec les objets rendus sous forme de tables, il n'était pas clair lorsqu'une étiquette d'en-tête n'était pas une propriété de l'objet. Par exemple, lorsque vous utilisez Get-Process, vous verrez une colonne avec l'en-tête CPU(s) pour indiquer le nombre de secondes de processeur utilisées par ce processus. Cependant, si vous essayez d'accéder à cette propriété, vous constaterez qu'elle s'appelle simplement CPU et que le (s) a été ajouté à l'en-tête pour indiquer qu'elle est exprimée en secondes. Cette nouvelle fonctionnalité vous permet de décorer l'étiquette de l'en-tête afin d'indiquer clairement qu'il ne s'agit pas d'une propriété de l'objet. La décoration par défaut rend simplement l'étiquette de l'en-tête en italique.

    Nom : 1.png
Affichages : 22000
Taille : 439,2 Ko

  • PSWindowsNativeCommandArgPassing Il s'agit de la continuation d'une fonctionnalité ajoutée pour la première fois dans la version 7.3. Une différence majeure entre Windows et les autres systèmes d'exploitation est la façon dont les arguments sont analysés, en particulier lorsqu'il s'agit de guillemets. Comme de plus en plus d'outils de ligne de commande Open Source sont utilisés sous Windows, Microsoft veut s'assurer que PowerShell peut passer des arguments à ces outils d'une manière qui fonctionne comme prévu. Cependant, de nombreux outils de ligne de commande sous Windows ne gèrent pas les arguments de la manière standard de l'industrie. Ainsi, un mode Windows pour $PSNativeCommandArgumentPassing permet à certains outils connus de revenir à la manière dont ils fonctionnaient avec Windows PowerShell, tandis que les outils modernes utilisent le nouveau mode Standard. Un mode Legacy est disponible pour ceux qui ont besoin de supporter des outils anciens qui ne fonctionnent pas avec le mode Windows.

  • PSNativeCommandErrorActionPreference Il s'agit d'une autre continuation d'une fonctionnalité ajoutée pour la première fois dans la version 7.3. Cette fonctionnalité vous permet de traiter un code de sortie non nul provenant d'une commande native comme un ErrorRecord qui proviendrait d'une cmdlet. Cela vous permet de définir $ErrorActionPreference à Stop et de faire en sorte que PowerShell arrête l'exécution, qu'une cmdlet ait une erreur ou qu'une commande native ait un code de sortie non nul. Cela simplifie les scripts qui devaient auparavant vérifier $LASTEXITCODE après l'exécution d'une commande native ou l'envelopper dans une fonction d'aide.

  • PSNativeCommandPreserveBytePipe Cette fonctionnalité vous permet de préserver le flux d'octets lors de l'envoi ou de la réception d'une commande native. Auparavant, tous les flux étaient convertis en chaînes de caractères lorsqu'ils étaient acheminés vers ou depuis une commande native, ce qui entraînait la perte du flux d'octets d'origine. Ceci est utile pour les outils qui attendent une entrée binaire tels que tar ou zip.


Il y a encore un certain nombre de fonctionnalités expérimentales dans cette version qui attendent des retours d'utilisateurs supplémentaires avant que Microsoft puisse les promouvoir dans la version stable.

Changements en cours

Il y a quelques changements en cours dans cette version dont vous devez être conscient, bien qu'elles soient rares.

L'une d'entre elles pourrait affecter certains utilisateurs : le nouveau paramètre commun -ProgressAction. Comme les autres paramètres communs, le nouveau paramètre -ProgressAction est automatiquement disponible pour les cmdlets et les fonctions avancées. Ce paramètre vous permet de contrôler la manière dont la progression est signalée lors de l'appel d'une cmdlet ou d'une fonction avancée. Auparavant, vous deviez définir $ProgressPreference sur SilentlyContinue pour supprimer la progression, puis la rétablir à sa valeur précédente.

Quelles sont les prochaines étapes ?

L'année prochaine, avec PowerShell 7.5, Microsoft continuera à faire de PowerShell un excellent environnement shell. Comme d'habitude, ils continueront à résoudre les problèmes et les bogues signalés par la communauté et les partenaires, ainsi qu'à adopter les dernières versions préliminaires de .NET 9.

Source : Microsoft

Et vous ?

Quel est votre avis sur cette mise à jour de PowerShell ?

Voir aussi :

Microsoft annonce .NET 8 avec des améliorations en matière de performances, de stabilité et de sécurité, ainsi que des améliorations de la plateforme et des outils pour accroître la productivité

Microsoft annonce la disponibilité générale de la version finale de PowerShell 7 pour Windows, macOS et Linux avec un support à long terme pour .Net Core 3.1 parmi les nouveautés

« Avec PowerShell et WSL, nous pouvons intégrer des commandes Linux à Windows comme s'il s'agissait d'applications natives », selon un ingénieur Microsoft