Microsoft a annoncé la disponibilité générale de PowerShell 7.7, la prochaine version de PowerShell bénéficiant d'un support standard à long terme. Basée sur .NET 11, cette version met l'accent sur le renforcement de la sécurité dans le mode de langage restreint (Constrained Language Mode), sur les fonctionnalités à distance et sur l'aide. Elle ajoute également de nouvelles commandes et de nouveaux paramètres, rend la gestion des paramètres de commutation plus prévisible et corrige des problèmes liés au démarrage, à la complétion par tabulation et au système de fichiers. PowerShell 7.7 inclut par ailleurs un certain nombre de fonctionnalités expérimentales ainsi que plusieurs mises à jour des modules.PowerShell est un programme de shell développé par Microsoft pour l'automatisation des tâches et la gestion de la configuration. Comme tout shell classique, il fournit un interpréteur de ligne de commande pour une utilisation interactive et un interpréteur de scripts pour l'automatisation via un langage qui lui est propre. Initialement réservé à Windows (sous le nom de Windows PowerShell), il est devenu open source et multiplateforme le 18 août 2016, avec l'introduction de PowerShell Core. Le premier repose sur le .NET Framework et le second sur .NET (anciennement .NET Core).
Microsoft a publié la version 7.7 de PowerShell 7.7, son shell de ligne de commande et langage de script axé sur les tâches. Outre diverses corrections et mises à jour de sécurité, cette version ajoute de nouvelles commandes et inclut également un certain nombre de fonctionnalités expérimentales.
« Nous sommes ravis d’annoncer la disponibilité générale de PowerShell 7.7, la prochaine version de PowerShell bénéficiant d’un support standard à long terme (STS). PowerShell 7.7 repose sur .NET 11, poursuivant ainsi l’alignement entre PowerShell et la plateforme .NET moderne », a déclaré Jason Helmick, Chef de produit senior chez Microsoft. « PowerShell 7.7 met l’accent sur le renforcement de la sécurité, l’introduction de nouvelles commandes et l’amélioration de celles existantes, ainsi que sur la fiabilité du moteur, des fonctionnalités à distance et de l’expérience du shell interactif. »
La sécurité est l'un des principaux aspects abordés dans PowerShell 7.7. Microsoft a mis en place un renforcement de la sécurité dans le mode « Constrained Language Mode », les fonctions à distance et l'aide. Cette version apporte également de nouvelles commandes et de nouveaux paramètres, ainsi que des modifications visant à rendre la gestion des paramètres de commutation plus prévisible. Parmi les autres améliorations notables, Microsoft a apporté des corrections à plusieurs aspects opérationnels du shell, notamment le comportement concernant le démarrage, la complétion par tabulation et le système de fichiers. Cette version comprend également plusieurs mises à jour des modules.
Principales nouveautés
- PowerShell 7.7 repose sur .NET 11
- PowerShell 7.7 inclut des mises à jour des modules suivants :
- Microsoft.PowerShell.PSResourceGet
- Microsoft.PowerShell.Archive
- Commandes nouvelles et améliorées
- Ajout de la cmdlet New-TemporaryDirectory
- Ajout du paramètre -Extension à Join-Path
- Ajout du paramètre -ExcludeProperty à Format-Table, Format-List et Format-Custom
- Get-AuthenticodeSignature renvoie désormais une propriété SubjectAlternativeName
- Ajout de la méthode ToRegex() à WildcardPattern
- New-Guid génère désormais par défaut des UUID de version 7 (triables par date)
- Renforcement de la sécurité
- Protections supplémentaires pour le mode « Constrained Language Mode », notamment l'affectation de propriétés à des objets non essentiels
- Validation plus stricte des arguments et des cadres dans les opérations à distance PowerShell, et rétablissement de la validation du schéma dans les cmdlets CIM
- Les protections implicites pour les opérations à distance s'appliquent désormais aux alias résolus
- Validation plus stricte lors de l'extraction d'une aide modifiable
- Autorisations de fichiers plus strictes pour le répertoire personnel temporaire de secours sur les plateformes Unix
- Test-Json ne résout plus les références de schéma externes, sauf si vous le lui demandez
- Paramètres de commutation plus prévisibles : les valeurs explicites -Switch:$false sont désormais prises en compte par les commandes Split-Path, New-PSSession, Test-Connection, Get-TimeZone, Get-Random, Get-SecureRandom, Get-Uptime et New-Guid, ainsi que par les paramètres d'opérateur de la commande Where-Object
- Améliorations en matière de fiabilité et de qualité
- Un fichier powershell.config.json endommagé ou illisible au niveau de l'utilisateur n'empêche plus le démarrage de PowerShell
- Correction de la commande Resolve-Path -Relative pour les noms commençant par un point
- Correction des résultats en double générés par la correspondance approximative de Get-Command
- Correction de la commande Clear-Host pour les sessions Windows à distance depuis des plateformes non Windows
- Correction de la complétion par tabulation des paramètres positionnels et de la complétion pour $PSBoundParameters.Keys
- Amélioration de la gestion des compléteurs d'arguments personnalisés renvoyant des résultats vides ou nuls
- Correction du dot-sourcing des scripts de fonctions avancées avec pwsh -file
- Correction de l'affichage de la barre de progression pour les caractères Unicode à double largeur
- La télémétrie respecte désormais les paramètres de diagnostic et de commentaires de Windows
Un exemple rapide
La commande New-TemporaryDirectory crée un répertoire portant un nom unique dans le dossier temporaire du système et renvoie un objet DirectoryInfo. Utilisez l'option -Prefix pour faciliter l'identification du répertoire :
| Code : | Sélectionner tout |
1 2 3 4 5 6 | # Create a uniquely named directory in the system temp folder $workDir = New-TemporaryDirectory -Prefix build $workDir.FullName # Remove it when you're done Remove-Item -LiteralPath $workDir.FullName -Recurse |
Changements importants
PowerShell 7.7 comporte un petit nombre de changements importants. Veuillez les passer en revue avant de mettre à jour vos scripts de production.
- La commande New-Guid génère par défaut des UUID de version 7 (triables par date) au lieu de ceux de version 4. Utilisez [guid]::NewGuid() lorsque vous avez besoin d'un GUID entièrement aléatoire.
- Les commandes Format-Table, Format-List et Format-Custom vérifient désormais que l'argument -Property n'est ni nul ni vide.
- La validation des arguments nuls ou vides génère désormais une exception System.ArgumentException.
- Les valeurs « false » explicites pour les commutateurs de l'opérateur Where-Object, telles que -EQ:$false, sont désormais gérées correctement.
Autres modifications de comportement
Ces modifications peuvent également avoir une incidence sur les scripts existants :
- La fonctionnalité de notification de mise à jour a été supprimée de PowerShell.
- Test-Json nécessite l'option -FetchExternalReference pour résoudre les références de schéma externes.
- Export-Csv n'accepte plus -Append en association avec -NoHeader. L'utilisation de -NoTypeInformation avec les cmdlets CSV génère désormais un avertissement d'obsolescence et n'a aucun effet.
- La commande Get-ChildItem -Name avec l'option -Recurse renvoie désormais les fichiers correspondants situés dans les sous-répertoires lorsque le chemin d'accès contient un caractère générique ou désigne un fichier.
- Le mode « Constrained Language Mode » restreint l'affectation de propriétés aux objets non essentiels, y compris via ForEach().
Source : Microsoft
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous des nouveautés proposées par cette version de PowerShell ? Les trouvez-vous utiles et intéressantes ?Voir aussi :
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)
Microsoft annonce la dernière version de son framework logiciel .NET 11, apportant des améliorations concernant C# 15, ASP.NET Core, .NET MAUI et le développement sous Windows basé sur l'IA
Vous avez lu gratuitement 721 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.