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 et end pour faciliter le nettoyage des ressources (#15177)
  • Remplacer la valeur par défaut de $PSStyle.OutputRendering par Hôte
  • Out-String et Out-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 pourInvoke-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
  • 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!)@rkeithhill!)
  • 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 et end pour faciliter le nettoyage des ressources (#15177)
  • Ajout du commutateur -Amended à la cmdlet Get-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 bloc clean au bloc de script comme pair à begin, process et end 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 style Legacy pour la transmission d’arguments.

  • PSExec - Ajoute la nouvelle applet de commande Switch-Process (alias exec) afin de fournir la compatibilité avec exec pour les systèmes non-Windows.

    PowerShell 7.3.1 a remplacé l’alias exec par une fonction qui wrappe Switch-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.