Partager via


Nouveautés de PowerShell 7.4

PowerShell 7.4 comprend les fonctionnalités, les mises à jour et les changements cassants suivants. PowerShell 7.4 utilise .NET 8.0.0.

Pour obtenir la liste complète des changements, consultez CHANGELOG dans le dépôt GitHub.

Changements cassants

  • Les images Docker Nano Server ne sont pas disponibles pour cette version
  • Ajouter le paramètre ProgressAction aux paramètres communs
  • Mise à jour de certaines API PowerShell pour lever ArgumentException au lieu d’ArgumentNullException quand 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 Draft 4. (#18141) (Merci @gregsdennis!). Pour plus d’informations sur les schémas JSON, consultez la documentation JSON Schema. Cela interrompt également Test-Json pour les fichiers JSON et JSONC avec des commentaires.
    • ConvertFrom-Json utilise toujours Newtonsoft.Json.Schema pour pouvoir convertir des fichiers JSON avec des commentaires.
  • La sortie de Test-Connection contient 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 désormais une erreur sur la nécessité d’utiliser sudo sur des 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 conserve 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 de la canalisation de données du flux d’octets vers le flux stdin d’une commande native.
  • Modifier le mode de gestion des chemins d’accès relatifs dans Resolve-Path lors de l’utilisation du paramètre RelativeBasePath (#19755) (Merci @MartinGC94!)
  • Supprimer le code PSv2 inutilisé : supprime la fonction TabExpansion (#18337)

Mises à jour du programme d’installation

Le package Windows MSI offre maintenant une option permettant de désactiver la 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é à proximité (côte à côte) avec PowerShellGet v2.2.5 et PackageManagement v1.4.8.1. Pour plus d’informations, consultez la documentation sur Microsoft.PowerShell.PSResourceGet.

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

Amélioration de la saisie semi-automatique par tabulation

Un grand merci à @MartinGC94 et tous les autres pour leur travail sur l’amélioration de la saisie semi-automatique via la touche Tab.

  • Correction d’un problème lié à l’exécution de la première commande d’un script avec une expression de tableau vide (#18355)
  • Correction de la complétion des arguments positionnels (#17796)
  • Classement du jeu de paramètres par défaut par ordre de priorité lors de la complétion d’arguments positionnels (#18755)
  • Amélioration de la pseudo-liaison pour les paramètres dynamiques (#18030)
  • Amélioration de l’inférence de type des clés de table de hachage (#17907)
  • Correction d’une erreur d’inférence de type pour les instructions return vides (#18351)
  • Amélioration de l’inférence de type pour Get-Random (#18972)
  • Correction de l’inférence de type pour toutes les variables de portée (#18758)
  • Amélioration de 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 de la saisie semi-automatique (#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 d’une fuite de la variable TabExpansion2 lors de la saisie semi-automatique des variables (#18763)
  • Activer la saisie semi-automatique des variables dans les étendues ScriptBlock (#19819)
  • Correction de la saisie semi-automatique de la variable d’instruction foreach (#19814)
  • Correction de la priorité de l’inférence de type de variable (#18691)
  • Correction de la saisie semi-automatique du membre pour la classe PowerShell Enum (#19740)
  • Correction de l’analyse des littéraux du tableau dans les expressions d’index des appels de méthode (#19224)
  • Améliorer la saisie semi-automatique du chemin d’accès (#19489)
  • Correction d’une erreur d’indexation hors limites dans CompleteInput pour une entrée de script vide (#19501)
  • Améliorer le niveau de performance de saisie semi-automatique des variables (#19595)
  • Améliorer la saisie semi-automatique de clé de table de hachage pour les affectations de variables contraintes de type, les tables de hachage imbriquées, etc. (#17660)
  • Déduire la sortie de l’application externe sous forme de chaînes (#19193)
  • Mettez à jour la saisie semi-automatique des paramètres pour les énumérations, afin d’exclure les valeurs non autorisées par les attributs ValidateRange (#17750) (Merci @fflaten!).
  • Corriger la saisie semi-automatique des paramètres dynamiques (#19510)
  • Ajouter la saisie semi-automatique pour les variables affectées par l’instruction de données (#19831)
  • Correction de l’extension par tilde (~) sur les systèmes Windows pour $home afin d’empêcher les cas d’utilisation générant des erreurs avec des commandes natives (#21529)

Améliorations apportées aux applets de commande web

Un grand merci à @CarloToso (et tous les autres) pour tout son travail concernant 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 petit nettoyage (#18536)
  • Achever 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 le codage du charset par défaut comme étant UTF8 (#18219)
  • Conservation de WebSession.MaximumRedirection à partir des modifications (#19190)
  • Les applets de commande web analysent 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)
  • Ajustement du comportement de la méthode PUT sur POST pour le type de contenu par défaut dans les applets de commande web (#19152)
  • Prise en compte de ContentType à partir d’en-têtes dans les applets de commande web (#19227)
  • Possibilité de conserver la méthode HTTP d’origine en ajoutant --PreserveHttpMethodOnRedirect aux applets de commande web (#18894)
  • Les applets de commande web affichent une erreur lors de la redirection de HTTPS vers HTTP (#18595)
  • Ajouter un commutateur AllowInsecureRedirect aux applets de commande web (#18546)
  • Amélioration du message détaillé dans les applets de commande web quand la longueur du contenu est inconnue (#19252)
  • Génération de l’URI relatif pour les liens à partir de la réponse dans Invoke-WebRequest (#19092)
  • Correctif de la redirection de -CustomMethod POST dans les WebCmdlets (#19111)
  • Suppression de la réponse précédente dans les applets de commande web (#19117)
  • Amélioration du format d’erreurs xml et json Invoke-WebRequest (#18837)
  • Ajouter une valeur ValidateNotNullOrEmpty aux paramètres OutFile et InFile des applets de commande web (#19044)
  • Mise à jour de la liste d’en-têtes HttpKnownHeaderNames (#18947)
  • Liens du correctif Invoke-RestMethod -FollowRelLink contenant des virgules (#18829)
  • Correction d’un bogue concernant la gestion de la redirection et KeepAuthorization dans les applets de commande web (#18902)
  • Ajouter un 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)
  • Ajouter FileNameStar à MultipartFileContent dans les WebCmdlets (#19467)
  • Correction de l’état HTTP de 409 à 429 pour que WebCmdlets obtienne un intervalle de nouvelle tentative à partir de l’en-tête Retry-After. (#19622) (Merci @mkht!)
  • Modifier -TimeoutSec et -ConnectionTimeoutSeconds, puis ajouter -OperationTimeoutSeconds aux applets de commande web (#19558) (Merci @stevenebutler!). Autres applets de commande
  • Prise en charge de Ctrl+C lorsque la connexion se bloque pendant la lecture des données dans WebCmdlets (#19330) (Merci @stevenebutler!)
  • Prise en charge du socket de domaine Unix dans WebCmdlets (#19343)

Autres améliorations apportées aux applets de commande

  • Test-Connection retourne désormais une erreur sur la nécessité d’utiliser sudo sur des plateformes Linux lors de l’utilisation d’une taille de mémoire tampon personnalisée (#20369)
  • Ajouter des types de sorties aux commandes du format (#18746) (Merci @MartinGC94!)
  • Ajouter des attributs du type de sorties pour Get-WinEvent (#17948) (Merci @MartinGC94!)
  • Ajout des paramètres Path et LiteralPath à la 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 au moment de l’utilisation de la culture implicite sur les systèmes non américains. (#17780) (Merci @dkaszews!)
  • Aucune exigence d’activité pendant la création d’un enregistrement de progression terminée (#18474) (Merci @MartinGC94!)
  • Interdiction de valeurs négatives pour les paramètres d’applet de commande Get-Content, -Head et -Tail (#19715) (Merci @CarloToso!)
  • Faire en sorte que Update-Help lève l’erreur appropriée quand la culture actuelle n’est associée à aucun langage (#19765) (Merci @josea!)
  • Autorisez la combinaison des paramètres -Skip et -SkipLast dans l’applet de commande Select-Object. (#18849) (Merci @ArmaanMcleod!)
  • Ajouter un applet de commande Get-SecureRandom (#19587)
  • Set-Clipboard -AsOSC52 pour une utilisation à distance (#18222) (Merci @dkaszews!)
  • Accélérer la résolution du chemin d’accès relatif Resolve-Path (#19171) (Merci @MartinGC94!)
  • Ajout du paramètre booléen -CaseInsensitive aux cmdlets Select-Object et Get-Unique (#19683) (Merci à @ArmaanMcleod!)
  • Restart-Computer et Stop-Computer doivent échouer avec une erreur lors de l’exécution au travers de sudo sur Unix (#19824)

Améliorations apportées au moteur

Mises à jour apportées à $PSStyle

  • Ajout des 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)
  • Par défaut, les en-têtes de tableau pour les champs calculés sont mis en forme en italique
  • Ajouter de la prise en charge du respect de $PSStyle.OutputRendering sur l’hôte distant (#19601)
  • Mise à jour des données de télémétrie pour inclure l’utilisation de modules CrescendoBuilt (#20371)

Autres mises à jour du moteur

  • Non-affiliation de la classe PowerShell à Runspace au moment de la déclaration de l’attribut NoRunspaceAffinity (#18138)
  • Ajout de l’attribut ValidateNotNullOrWhiteSpace (#17191) (Merci @wmentha!)
  • Ajout de sqlcmd à la liste pour le passage d’arguments hérités (#18559)
  • Ajout de 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 globbing de caractères génériques à la racine des chemins d’accès de l’appareil (#19442) (Merci @MartinGC94!)
  • Ajouter une API publique pour obtenir les emplacements des éléments PSModulePath (#19422)
  • Correction d’une chaîne incorrecte pour la conversion du type (#19560) (Merci @MartinGC94!)
  • Correction de l’exécution lente lors de l’utilisation de multiples points d’arrêt (#14953) (Merci @nohwnd!)
  • Supprimer le code lié à #requires -pssnapin (#19320)

Fonctionnalités expérimentales

PowerShell 7.4 introduit les fonctionnalités expérimentales suivantes :

  • PSFeedbackProvider - Remplace le framework de suggestions codées en dur par un fournisseur de commentaires extensible.
    • Cette fonctionnalité ajoute également à $PSStyle.Formatting les propriétés FeedbackName, FeedbackText et FeedbackAction, qui vous permettent de changer la mise en forme des messages de commentaires.
  • PSModuleAutoLoadSkipOfflineFiles - La découverte de modules ignore désormais les fichiers marqués par les fournisseurs de cloud comme n’étant pas complètement sur le disque.
  • PSCommandWithArgs - Ajout de la prise en charge du passage d’arguments à des commandes sous la forme d’une chaîne unique

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

Dans PowerShell 7.4, des changements ont été apportés aux fonctionnalités expérimentales suivantes :

Pour plus d’informations sur les fonctionnalités expérimentales, consultez Utilisation des fonctionnalités expérimentales.