Gros plan sur un terminal PowerShell moderne affichant une ligne de commande en environnement de développement.

PowerShell 7.7 sort avec .NET 11, renforcements de sécurité

Microsoft a rendu disponible la version générale de PowerShell 7.7, ancrée sur la plateforme .NET 11. Cette mise à jour, attendue par la communauté, se concentre sur le durcissement de la sécurité, l’ajout de commandes améliorées et une meilleure fiabilité globale du moteur, du shell interactif au remoting.

Après des retards sur les précédents cycles de mise à jour, l’équipe PowerShell a réussi à livrer cette version à temps, coïncidant avec la conférence .NET. D’après les annonces officielles, cette version n’est pas qu’une simple correction de bugs ; elle apporte des protections notables, notamment dans le mode de langage contraint (Constrained Language Mode), le remoting et la manière dont l’aide est extraite.

Les apports de cette nouvelle mouture

Les développeurs et administrateurs verront plusieurs ajouts concrets. Par exemple, le cmdlet New-TemporaryDirectory permet désormais de créer un répertoire aux noms uniques dans le dossier temporaire du système, ce qui est pratique pour isoler des tâches. On retrouve aussi des améliorations ciblées : Get-AuthenticodeSignature renvoie désormais la propriété SubjectAlternativeName, et New-Guid génère par défaut des UUID de version 7, c’est-à-dire des identifiants triables temporellement.

En ce qui concerne la manipulation des données, l’ajout du paramètre -ExcludeProperty à Format-Table, Format-List et Format-Custom offre plus de finesse dans l’affichage. De plus, le cmdlet Join-Path bénéficie d’un nouveau paramètre, -Extension, pour une gestion des chemins plus complète.

Photographie de personnes travaillant sur un bureau technique dans un environnement de bureau éclairé chaleureusement.

Sécurité et stabilité au cœur de l’outil

Le renforcement de la sécurité est un point majeur souligné par l’équipe. Au-delà des protections accrues dans le mode de langage contraint, on note une validation des arguments et des cadres plus stricte dans le remoting. Les protections implicites s’appliquent désormais aux alias résolus, ce qui réduit les surfaces d’attaque potentielles.

La stabilité a également été une priorité, car la version 7.7 corrige des problèmes de comportement qui pouvaient bloquer le démarrage ou perturber les sessions. Par exemple, si le fichier powershell.config.json utilisateur est corrompu, PowerShell ne s’arrêtera plus net. On constate également des ajustements dans la gestion des paramètres d’interrupteurs (switch parameters), qui deviennent plus prévisibles pour des commandes comme Split-Path ou Where-Object.

Certains changements, bien que mineurs en apparence, impactent les scripts existants. L’utilisation de New-Guid par défaut pour la version 7 implique que si l’on souhaite absolument un GUID totalement aléatoire, il faut continuer à appeler explicitement [guid]::NewGuid().

Il faudra surveiller l’impact de la suppression de la fonctionnalité de notification de mise à jour. Par ailleurs, si l’on utilise Test-Json, il devient nécessaire d’ajouter le paramètre -FetchExternalReference pour charger des schémas externes.

Sources