Partager via


Nouveautés de PowerShell 7.4

PowerShell 7.4.7 inclut les fonctionnalités, mises à jour et changements majeurs suivants. PowerShell 7.4.7 repose sur .NET 8.0.12.

Pour obtenir la liste complète des modifications, consultez la changeLOG dans le référentiel GitHub.

Changements cassants

  • Les images Docker nano server ne sont pas disponibles pour cette version
  • Ajout du paramètre ProgressAction aux paramètres communs
  • Mettez à jour certaines API PowerShell pour lever argumentException au lieu de ArgumentNullException lorsque l’argument est une chaîne vide (#19215) (merci @xtqqczze!)
  • Supprimer le code lié à #requires -pssnapin (#19320)
  • Test-Json utilise désormais JsonSchema.NET au lieu de Newtonsoft.Json.Schema.
    • Avec cette modification, Test-Json ne prend plus en charge les anciens schémas Brouillon 4. (#18141) (Merci @gregsdennis!). Pour plus d’informations sur les schémas JSON, consultez documentation sur le schéma JSON. Cela casse également Test-Json pour les fichiers JSON et JSONC avec des commentaires.
    • ConvertFrom-Json support utilise toujours Newtonsoft.Json.Schema pour pouvoir convertir des fichiers JSON avec des commentaires.
  • La sortie de Test-Connection inclut désormais des informations plus détaillées sur les tests de connexion TCP
  • .NET a introduit des modifications qui ont affecté Test-Connection. L’applet de commande retourne maintenant une erreur sur la nécessité d’utiliser sudo sur les plateformes Linux lors de l’utilisation d’une taille de mémoire tampon personnalisée (#20369)
  • La fonctionnalité expérimentale PSNativeCommandPreserveBytePipe est désormais standard. PowerShell préserve désormais les données du flux d'octets lors de la redirection du flux stdout d'une commande native vers un fichier ou lors du piping de données du flux d'octets vers le flux stdin d'une commande native.
  • Modifier le mode de gestion des chemins relatifs dans lors de l’utilisation du paramètre RelativeBasePath (#19755) (merci
  • Supprimer le code PSv2 inutilisé - supprime la fonction TabExpansion (#18337)

Mises à jour du programme d’installation

Le package MSI Windows offre désormais une option permettant de désactiver les données de télémétrie PowerShell pendant l’installation. Pour plus d’informations, consultez Installer le package msi à partir de la ligne de commande.

Versions mises à jour de PSResourceGet et PSReadLine

PowerShell 7.4 inclut Microsoft.PowerShell.PSResourceGet v1.0.1. Ce module est installé côte à côte avec PowerShellGet v2.2.5 et PackageManagement v1.4.8.1. Pour plus d’informations, consultez la documentation relative à Microsoft.PowerShell.PSResourceGet.

PowerShell 7.4 inclut désormais PSReadLine v2.3.4. Pour plus d’informations, consultez la documentation pour PSReadLine.

Amélioration de la saisie semi-automatique par tabulation

Merci beaucoup à @MartinGC94 et d'autres personnes pour tout leur travail afin d'améliorer la complétion automatique des onglets.

  • Résolution du problème lors de la fin de la première commande d’un script avec une expression de tableau vide (#18355)
  • Correction de l’achèvement de l’argument positionnel (#17796)
  • Hiérarchiser le jeu de paramètres par défaut lors de la fin des arguments positionnels (#18755)
  • Améliorer la pseudo-liaison pour les paramètres dynamiques (#18030)
  • Améliorer l’inférence de type des clés de hachage (#17907)
  • Corriger l’erreur d’inférence de type pour les instructions de retour vides (#18351)
  • Améliorer l’inférence de type pour Get-Random (#18972)
  • Correction de l’inférence de type pour toutes les variables d’étendue (#18758)
  • Améliorer l’énumération des types déduits dans le pipeline (#17799)
  • Ajout de la complétion des valeurs dans les comparaisons au moment de la comparaison des enums (#17654)
  • Ajout de la complétion de l’affectation de propriétés pour les enums (#19178)
  • Correction de la complétion des propriétés d’une variable PSCustomObject (#18682)
  • Correction de la complétion des membres dans l’argument d’attribut (#17902)
  • Exclure les alias de paramètres redondants des résultats d’achèvement (#19382)
  • Correction de la complétion des membres de classe pour les classes avec des types de base (#19179)
  • Ajout de la complétion pour les mots clés Using (#16514)
  • Correction de la fuite de la variable TabExpansion2 lors de la complétion des variables (#18763)
  • Activer l’achèvement des variables dans les étendues ScriptBlock (#19819)
  • Correction de la finalisation de la variable de l’instruction foreach (#19814)
  • Correction de la priorité d'inférence des types de variables (#18691)
  • Correction de la complétion des membres pour la classe Enum de PowerShell (#19740)
  • Correction de l'analyse des tableaux littéraux dans les expressions d'index dans les appels de méthode (#19224)
  • Améliorer la complétion des chemins (#19489)
  • Correction d’une erreur d’indexation hors limites dans CompleteInput pour l’entrée de script vide (#19501)
  • Améliorer la performance de la complétion des variables (#19595)
  • Amélioration de la complétion des clés de tables de hachage pour les assignations de variables avec contraintes de type, les tables de hachage imbriquées et plus encore (#17660)
  • Inférer les sorties d'applications externes en tant que chaînes (#19193)
  • Mettez à jour l’achèvement des paramètres pour les énumérations afin d’exclure les valeurs non autorisées par les attributs ValidateRange (#17750) (Merci @fflaten!).
  • Correction de la complétion des paramètres dynamiques (#19510)
  • Ajouter la complétion pour les variables définies par l'instruction Data (#19831)
  • Correction de l'expansion du tilde (~) sur les systèmes Windows en $home pour éviter de casser les cas d'utilisation avec les commandes natives (#21529)

Améliorations apportées aux applets de commande web

Merci beaucoup à @CarloToso et d’autres pour tout le travail sur l’amélioration des applets de commande web.

  • Correction de la décompression dans les applets de commande web pour inclure Brotli (#17955) (merci @iSazonov!)
  • Les Webcmdlets ajoutent 308 aux codes de redirection et un petit nettoyage (#18536)
  • Effectuez le rendu de la barre de progression dans Invoke-WebRequest lorsque le téléchargement est terminé ou annulé (#18130)
  • Les applets de commande web obtiennent l’intervalle Retry-After à partir des en-têtes de réponse si le code d’état est 429 (#18717)
  • Les applets de commande web définissent l’encodage de charset par défaut sur UTF8 (#18219)
  • Conservation de WebSession.MaximumRedirection à partir des modifications (#19190)
  • WebCmdlets analyse la déclaration XML pour obtenir la valeur d’encodage, le cas échéant. (#18748)
  • Correction de l’utilisation de xml -Body dans les applets de commande web sans encodage (#19281)
  • Ajuster le comportement de méthode PUT à POST un pour le type de contenu par défaut dans WebCmdlets (#19152)
  • Prise en compte de ContentType à partir d’en-têtes dans les applets de commande web (#19227)
  • Autoriser à conserver la méthode HTTP d’origine en ajoutant -PreserveHttpMethodOnRedirect aux applets de commande Web (#18894)
  • Webcmdlets affichent une erreur sur la redirection de https vers http (#18595)
  • Ajout du commutateur AllowInsecureRedirect aux Web cmdlets (#18546)
  • Améliorer le message détaillé dans les applets de commande web lorsque la longueur du contenu est inconnue (#19252)
  • Construction de l'URI relatif pour les liens à partir de la réponse dans Invoke-WebRequest (#19092)
  • Correction de la redirection pour -CustomMethod POST dans WebCmdlets (#19111)
  • Supprimer la réponse précédente dans Webcmdlets (#19117)
  • Améliorer le format des erreurs XML et JSON Invoke-WebRequest (#18837)
  • Ajouter ValidateNotNullOrEmpty aux paramètres OutFile et InFile des WebCmdlets (#19044)
  • HttpKnownHeaderNames met à jour la liste des en-têtes (#18947)
  • Invoke-RestMethod -FollowRelLink corriger les liens contenant des virgules (#18829)
  • Correction d’un bogue avec la gestion de la redirection et de keepAuthorization dans les applets de commande Web (#18902)
  • Ajouter StatusCode à HttpResponseException (#18842)
  • Prise en charge des connexions persistantes HTTP dans les applets de commande web (#19249) (Merci @stevenebutler!)
  • Petit nettoyage Invoke-RestMethod (#19490)
  • Améliorer le message détaillé de WebCmdlets pour afficher la version HTTP correcte (#19616)
  • Ajout de FileNameStar à MultipartFileContent dans les WebCmdlets (#19467)
  • Correction du statut HTTP de 409 à 429 pour que les WebCmdlets obtiennent l'intervalle de réessai à partir de l'en-tête Retry-After. (#19622) (Merci @mkht!)
  • Remplacez -TimeoutSec par -ConnectionTimeoutSeconds et ajoutez -OperationTimeoutSeconds aux applets de commande web (#19558) (Merci @stevenebutler!) Autres applets de commande
  • Prise en charge de Ctrl+c lorsque la connexion se bloque lors de la lecture de données dans les WebCmdlets (#19330) (Merci @stevenebutler!))
  • Prise en charge du socket de domaine Unix dans les WebCmdlets (#19343)

Autres améliorations apportées aux applets de commande

  • Test-Connection retourne maintenant une erreur sur la nécessité d’utiliser sudo sur les plateformes Linux lors de l’utilisation d’une taille de mémoire tampon personnalisée (#20369)
  • Ajouter des types de sortie aux commandes Format (#18746) (merci @MartinGC94!)
  • Ajouter des attributs de type de sortie pour Get-WinEvent (#17948) (Merci @MartinGC94!)
  • Ajouter les paramètres Path et LiteralPath au cmdlet Test-Json (#19042) (Merci @ArmaanMcleod!)
  • Ajout du paramètre NoHeader aux cmdlets ConvertTo-Csv et Export-Csv (#19108) (Merci à @ArmaanMcleod!)
  • Ajout des paramètres Confirm et WhatIf à Stop-Transcript(#18731) (Merci @JohnLBevan!)
  • Ajout du paramètre FuzzyMinimumDistance à Get-Command (#18261)
  • Possibilité pour le paramètre Encoding d’utiliser l’encodage ANSI dans PowerShell (#19298) (Merci à @CarloToso!)
  • Ajout de la progression à Copy-Item (#18735)
  • Update-Help signale désormais une erreur lors de l'utilisation de la culture implicite sur les systèmes non américains. (#17780) (Merci @dkaszews!)
  • Ne pas exiger d'activité lors de la création d'un enregistrement de progrès terminé (#18474) (Merci @MartinGC94!))
  • Interdire les valeurs négatives pour les paramètres d’applet de commande Get-Content-Head et -Tail (#19715) (Merci @CarloToso!)
  • Faites Update-Help générer une erreur appropriée lorsque la culture actuelle n’est pas associée à une langue (#19765) (Merci @josea!)
  • Autorisez la combinaison de paramètres de -Skip et de -SkipLast dans Select-Object applet de commande. (#18849) (Merci @ArmaanMcleod!)
  • Ajouter Get-SecureRandom cmdlet (#19587)
  • Set-Clipboard -AsOSC52 pour une utilisation à distance (#18222) (merci @dkaszews!)
  • Accélération de la résolution des chemins relatifs Resolve-Path (#19171) (Merci @MartinGC94!))
  • Ajout du paramètre switch -CaseInsensitive aux applets de commande Select-Object et Get-Unique (#19683) (merci @ArmaanMcleod!)
  • Restart-Computer et Stop-Computer doivent échouer avec une erreur lorsqu'ils ne sont pas exécutés via sudo sur Unix (#19824)

Améliorations apportées au moteur

Mises à jour de $PSStyle

  • Ajoute les propriétés Dim et DimOff (#18653)
  • Ajout de méthodes statiques à la classe PSStyle, qui mappent les valeurs ConsoleColor de premier plan et d’arrière-plan à des séquences d’échappement ANSI (#17938)
  • Les en-têtes de tableau pour les champs calculés sont mis en forme en italique par défaut
  • Ajout de la communication à distance de $PSStyle.OutputRendering (#19601)
  • Données de télémétrie mises à jour pour inclure l’utilisation de modules CrescendoBuilt (#20371)

Autres mises à jour du moteur

  • Rendre la classe PowerShell non affiliée à Runspace lors de la déclaration de l’attribut NoRunspaceAffinity (#18138)
  • Ajouter l’attribut ValidateNotNullOrWhiteSpace (#17191) (Merci @wmentha!)
  • Ajout de sqlcmd à la liste pour le passage d’arguments hérités (#18559)
  • Ajouter la fonction cd~ (#18308) (merci @GigaScratch!)
  • Correction de l'analyse des types de tableaux dans les types génériques (#19205) (Merci @MartinGC94!))
  • Correction du caractère générique dans la racine des chemins d'appareils (#19442) (Merci @MartinGC94!))
  • Ajouter une API publique pour obtenir des emplacements d’éléments PSModulePath (#19422)
  • Correction d’une conversion incorrecte d'une chaîne en type (#19560) (Merci @MartinGC94!)
  • Correction d'une exécution lente lorsque de nombreux points d'arrêt sont utilisés (#14953) (Merci @nohwnd!))
  • Supprimer le code lié à #requires -pssnapin (#19320)

Fonctionnalités expérimentales

PowerShell 7.4 présente les fonctionnalités expérimentales suivantes :

  • PSFeedbackProvider : remplace l’infrastructure de suggestion codée en dur par un fournisseur de commentaires extensible.
    • Cette fonctionnalité ajoute également les propriétés FeedbackName, FeedbackTextet FeedbackAction à $PSStyle.Formatting qui vous permettent de modifier la mise en forme des messages de commentaires.
  • PSModuleAutoLoadSkipOfflineFiles - La découverte du module ignore désormais les fichiers marqués par les fournisseurs de cloud comme n'étant pas entièrement sur le disque.
  • PSCommandWithArgs - Ajout de la prise en charge du passage des arguments aux commandes sous la forme d'une chaîne unique

Les fonctionnalités expérimentales suivantes sont devenues standard :

PowerShell 7.4 a modifié les fonctionnalités expérimentales suivantes :

  • PSCommandNotFoundSuggestion - Cette fonctionnalité utilise désormais un fournisseur de commentaires extensible plutôt que des suggestions codées en dur (#18726)

Pour plus d’informations sur les fonctionnalités expérimentales, consultez Using Experimental Features.