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 égalementTest-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.
- Avec cette modification,
- 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’utilisersudo
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’utilisersudo
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
etExport-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
dansSelect-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 commandeSelect-Object
etGet-Unique
(#19683) (merci @ArmaanMcleod!) Restart-Computer
etStop-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.
- Cette fonctionnalité ajoute également les propriétés FeedbackName, FeedbackTextet FeedbackAction à
- 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 :
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
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.