Nouveautés de PowerShell 7.3
PowerShell 7.3 est la prochaine version stable qui repose sur .NET 7.0.
PowerShell 7.3 comprend les fonctionnalités, les mises à jour et les changements cassants suivants.
Dernières modifications et améliorations
- Dans cette version, les API Windows ont été mises à jour ou supprimées pour des raisons de conformité, ce qui signifie que PowerShell 7.3 ne s’exécute pas sur Windows 7. Bien que Windows 7 ne soit plus pris en charge, les builds précédentes pouvaient s’exécuter sur Windows 7.
- PowerShell Direct pour Hyper-V est pris en charge uniquement sur Windows 10 version 1809 et ultérieure.
Test-Connection
ne fonctionne plus en raison d’un changement cassant intentionnel dans .NET 7. Ce problème est suivi sous le no 17018.- Ajout du bloc
clean
au bloc de script comme homologue àbegin
,process
etend
pour faciliter le nettoyage des ressources (#15177) - Remplacer la valeur par défaut de
$PSStyle.OutputRendering
par Hôte Out-String
etOut-File
conservent l’entrée de chaîne inchangée (#17455)- Déplacement de la définition de données de type de System.Security.AccessControl.ObjectSecurity vers le module Microsoft.PowerShell.Security (#16355) (merci @iSazonov!)
- Avant cette modification, un utilisateur n’a pas besoin d’importer explicitement le module Microsoft.PowerShell.Security pour utiliser les propriétés de code définies pour une instance de System.Security.AccessControl.ObjectSecurity.
- Après cette modification, un utilisateur doit importer explicitement le module Microsoft.PowerShell.Security afin d’utiliser ces propriétés de code et méthodes de code.
Amélioration de la saisie semi-automatique par tabulation
- PowerShell 7.3 inclut PSReadline 2.2.6 qui active la fonctionnalité IntelliSense Prédictive par défaut. Pour plus d’informations, consultez about_PSReadLine.
- Corriger la saisie semi-automatique via la touche Tab dans le bloc de script spécifié pour
ValidateScriptAttribute
. (#14550) (merci @MartinGC94!) - Ajout de la saisie semi-automatique par tabulation pour les étiquettes de boucle après
break
/continue
(#16438) (merci @MartinGC94!) - Amélioration de la saisie semi-automatique des tables de hachage dans plusieurs scénarios (#16498) (merci @MartinGC94!)
- Projection de paramètres
- Paramètre Arguments pour
Invoke-CimMethod
- Paramètre FilterHashtable pour
Get-WinEvent
- Paramètre Property pour les cmdlets CIM
- Suppression des doublons dans les scénarios de saisie semi-automatique des membres
- Prise en charge des barres obliques dans la saisie semi-automatique des partages réseau (chemin d’accès UNC) (#17111) (merci @sba923!)
- Amélioration de la saisie semi-automatique des membres (#16504) (merci @MartinGC94!)
- Priorisation de la saisie semi-automatique ValidateSet par rapport aux énumérations pour les paramètres (#15257) (merci @MartinGC94!)
- Ajout de la prise en charge de l’inférence de type pour les méthodes génériques avec des paramètres de type (#16951) (merci @MartinGC94!)
- Amélioration de l’inférence de type et de la saisie semi-automatique (#16963) (merci @MartinGC94!)
- Permet d’afficher les méthodes dans les résultats de complétion pour
ForEach-Object -MemberName
- Empêche la complétion sur les expressions qui renvoient void comme
([void](""))
- Permet aux constructeurs de classe non par défaut de s’afficher lorsque la complétion de classe est basée sur l’AST
- Permet d’afficher les méthodes dans les résultats de complétion pour
- Amélioration de l’inférence de type pour
$_
(#17716) (merci @MartinGC94!) - Correction de l’inférence de type pour ICollection (#17752) (merci @MartinGC94!)
- Suppression des accolades empêchée lors de la saisie semi-automatique des variables (#17751) (merci @MartinGC94!)
- Ajout de la saisie semi-automatique pour les expressions d’index pour les dictionnaires (#17619) (merci @MartinGC94!)
- Correction de la saisie semi-automatique du type pour les jetons d’attribut (#17484) (merci @MartinGC94!)
- Amélioration de la saisie semi-automatique dans l’onglet de paramètre dynamique (#17661) (merci @MartinGC94!)
- Liaison des paramètres positionnels évitée lors de la saisie semi-automatique du paramètre avant la valeur (#17693) (merci @MartinGC94!)
Amélioration de la gestion des erreurs
- Définition
$?
correcte pour l’expression de commande avec des redirections (#16046) - Correction d’une erreur de conversion en utilisant
$PSNativeCommandUseErrorActionPreference
(#15993) - La gestion des erreurs de la commande native respecte optionnellement
ErrorActionPreference
(#15897) - Spécification du chemin de l’exécutable comme
TargetObject
pour un code de sortie non nul ErrorRecord (#16108) (merci @rkeithhill!)
Améliorations apportées à la session et à la communication à distance
- Ajout de
-Options
aux commandes PSRP via SSH pour autoriser le passage direct des options OpenSSH (#12802) (merci @BrannenGH!) - Ajout d’un paramètre
-ConfigurationFile
àpwsh
pour autoriser le démarrage d’un nouveau processus avec la configuration de session définie dans un fichier.pssc
(#17447) - Ajout de la prise en charge de l’utilisation de
New-PSSessionConfigurationFile
sur des plateformes non Windows (#17447)
Applets de commande mises à jour
- Ajout du paramètre
-HttpVersion
aux cmdlets web (#15853) (merci @hayhay27!) - Ajout de la prise en charge des cmdlets web pour les étiquettes d’entrée ouvertes (#16193) (merci @farmerau!)
- Correction de
ConvertTo-Json -Depth
pour autoriser une valeur maximale de 100 (#16197) (merci @KevRitchie!) - Amélioration de la gestion des variables lors de l’appel de
Invoke-Command
avec l’expression$using:
(#16113) (merci @dwtaber!) - Ajout de
-StrictMode
àInvoke-Command
pour autoriser la spécification du mode strict quand la commande est appelée en local (#16545) (merci @Thomas-Yu!) - Ajout du bloc
clean
au bloc de script comme homologue àbegin
,process
etend
pour faciliter le nettoyage des ressources (#15177) - Ajout du commutateur
-Amended
à la cmdletGet-CimClass
(#17477) (merci @iSazonov) - Modification de
ConvertFrom-Json -AsHashtable
pour utiliser la table de hachage ordonnée (#17405) - Suppression des séquences d’échappement ANSI dans les chaînes avant l’envoi vers
Out-GridView
(#17664) - Ajout du paramètre Millisecondes à
New-TimeSpan
(#17621) (merci @NoMoreFood!) - Affichage des paramètres facultatifs lors de l’affichage des définitions de méthode et des surcharges (#13799) (merci @eugenesmlv!)
- Autorisation de l’exécution des commandes même si le répertoire de travail actuel n’existe plus (#17579)
- Ajout de la prise en charge du protocole HTTPS avec
Set-AuthenticodeSignature -TimeStampServer
(#16134) (merci @Ryan-Hutchison-USAF!) - Affichage des nombres décimaux dans une table à l’aide de la culture actuelle (#17650)
- Ajout de l’accélérateur de type ordonné pour OrderedDictionary (#17804) (merci @fflaten!)
- Ajout de
find.exe
au comportement de liaison d’argument hérité pour Windows (#17715) - Ajout d’un commutateur
-noprofileloadtime
à pwsh (#17535) (merci @rkeithhill!)
Pour obtenir la liste complète des changements, consultez le Journal des modifications dans le référentiel GitHub.
Fonctionnalités expérimentales
Dans PowerShell 7.3, les fonctionnalités expérimentales suivantes sont devenues standard :
PSAnsiRenderingFileInfo
- Cette fonctionnalité ajoute le membre$PSStyle.FileInfo
et active la coloration de types de fichiers spécifiques.PSCleanBlock
- Ajoute le blocclean
au bloc de script comme pair àbegin
,process
etend
pour faciliter le nettoyage des ressources.PSAMSIMethodInvocationLogging
– Étend les données envoyées à AMSI pour inspection afin d’inclure tous les appels des membres de la méthode .NET.PSNativeCommandArgumentPassing - PowerShell utilise désormais la propriété ArgumentList de l’objet StartProcessInfo plutôt que l’ancien mécanisme de reconstruction d’une chaîne lors de l’appel d’un exécutable natif.
PowerShell 7.3.1 ajoute
sqlcmd.exe
à la liste des commandes natives dans Windows qui utilisent le styleLegacy
pour la transmission d’arguments.PSExec
- Ajoute la nouvelle applet de commandeSwitch-Process
(aliasexec
) afin de fournir la compatibilité avecexec
pour les systèmes non-Windows.PowerShell 7.3.1 a remplacé l’alias
exec
par une fonction qui wrappeSwitch-Process
. La fonction vous permet de passer les paramètres à la commande native qui ont pu être liés à tort au paramètre WithCommand.
PowerShell 7.3 intègre les fonctionnalités expérimentales suivantes :
- PSNativeCommandErrorActionPreference - Ajoute la variable
$PSNativeCommandUseErrorActionPreference
pour permettre aux erreurs générées par les commandes natives d’être des erreurs PowerShell.
PowerShell 7.3 a supprimé les fonctionnalités expérimentales suivantes :
- La fonctionnalité expérimentale
PSNativePSPathResolution
n’est plus prise en charge. - La fonctionnalité expérimentale
PSStrictModeAssignment
n’est plus prise en charge.
Pour plus d’informations sur les fonctionnalités expérimentales, consultez Utilisation des fonctionnalités expérimentales.