Partager via


Nouveautés dans PowerShell 7.0

PowerShell 7.0 est une édition open source et multiplateforme (Windows, macOS et Linux) de PowerShell, conçue pour gérer des environnements hétérogènes et un cloud hybride.

Dans cette version, nous introduisons un certain nombre de nouvelles fonctionnalités, notamment :

  • Parallélisation de pipeline avec ForEach-Object -Parallel
  • Nouveaux opérateurs :
    • Opérateur ternaire : a ? b : c
    • Opérateurs de chaîne de pipelines : || et &&
    • Opérateurs conditionnels nuls : ?? et ??=
  • Une vue d’erreur simplifiée et dynamique ainsi Get-Error qu’un cmdlet pour faciliter l’investigation des erreurs
  • Une couche de compatibilité qui permet aux utilisateurs d’importer des modules dans une session implicite Windows PowerShell
  • Notifications automatiques de nouvelles versions
  • La capacité d’invoquer directement les ressources DSC depuis PowerShell 7 (expérimental)

Pour voir la liste complète des fonctionnalités et corrections, consultez les journaux de modifications.

Où puis-je installer PowerShell ?

PowerShell 7 prend actuellement en charge les systèmes d’exploitation suivants sur x64, notamment :

  • Windows 8.1 et 10
  • Windows Server 2012, 2012 R2, 2016 et 2019
  • macOS 10.13+
  • Red Hat Enterprise Linux (RHEL) / CentOS 7
  • Fedora 30+
  • Debian 9
  • Ubuntu LTS 16.04+
  • Alpine Linux 3.8+

De plus, PowerShell 7.0 prend en charge les versions ARM32 et ARM64 de Debian, Ubuntu et ARM64 Alpine Linux.

Consultez les instructions d’installation de votre système d’exploitation préféré : Windows, macOS ou Linux.

Bien que non officiellement prise en charge, la communauté a également fourni des packages pour Arch et Kali Linux.

Note

Debian 10 et CentOS 8 ne supportent actuellement pas le système à distance de WinRM. Pour plus de détails sur la configuration de la télécommande basée sur SSH, voir PowerShell Remoting over SSH.

Pour plus d’informations up-toà date sur les systèmes d’exploitation pris en charge et le cycle de vie du support, consultez le cycle de vie de support PowerShell.

Exécution de PowerShell 7

PowerShell 7 s’installe dans un répertoire séparé de Windows PowerShell. Cela vous permet d’exécuter PowerShell 7 en parallèle avec Windows PowerShell 5.1. Pour PowerShell 6.x, PowerShell 7 est une mise à jour en place qui supprime PowerShell 6.x.

  • PowerShell 7 est installé pour %programfiles%\PowerShell\7
  • Le dossier %programfiles%\PowerShell\7 est ajouté à $env:PATH

Le paquet d’installation PowerShell 7 met à jour les versions précédentes de PowerShell 6.x :

  • PowerShell 6.x sous Windows : %programfiles%\PowerShell\6 est remplacé par %programfiles%\PowerShell\7
  • Linux : /opt/microsoft/powershell/6 est remplacé par /opt/microsoft/powershell/7
  • macOS : /usr/local/microsoft/powershell/6 est remplacé par /usr/local/microsoft/powershell/7

Note

Dans Windows PowerShell, l’exécutable pour lancer PowerShell s’appelle powershell.exe. Dans la version 6 et ultérieure, le nom de l’exécutable est changé pour supporter l’exécution côte à côte. Le nouveau nom d’exécutable pour lancer PowerShell 7 est pwsh.exe. Les versions de prévisualisation restent en place pwsh-preview au lieu de pwsh se trouver sous le répertoire 7-preview.

Compatibilité ascendante améliorée avec Windows PowerShell

PowerShell 7.0 marque une transition vers .NET Core 3.1, permettant une compatibilité rétroactive nettement plus grande avec les modules PowerShell existants de Windows. Cela inclut de nombreux modules sous Windows nécessitant des fonctionnalités d’interface graphique comme Out-GridView et Show-Command, ainsi que de nombreux modules de gestion de rôles livrés dans Windows.

Pour Windows, un nouveau paramètre de commutation, UseWindowsPowerShell , est ajouté à Import-Module. Ce commutateur crée un module proxy dans PowerShell 7 qui utilise un processus PowerShell local Windows pour exécuter implicitement tous les cmdlets contenus dans ce module. Pour plus d’informations sur Import-Module.

Pour plus d’informations sur les modules Microsoft compatibles avec PowerShell 7.0, consultez le tableau de compatibilité des modules.

Exécution parallèle ajoutée à ForEach-Object

Le ForEach-Object cmdlet, qui itère les éléments d’une collection, bénéficie désormais d’un parallélisme intégré avec le nouveau paramètre Parallèle .

Par défaut, les blocs de script parallèles utilisent le répertoire de travail courant de l’appelant qui a lancé les tâches parallèles.

Cet exemple récupère 50 000 entrées de journal à partir de 5 journaux système sur une machine Windows locale :

$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'

$logEntries = $logNames | ForEach-Object -Parallel {
    Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5

$logEntries.Count

50000

Le paramètre Parallel spécifie le bloc de script qui est exécuté en parallèle pour chaque nom de journal d’entrée.

Le nouveau paramètre ThrottleLimit limite le nombre de blocs de script qui s’exécutent en parallèle à un moment donné. La valeur par défaut est 5.

Utilisez la $_ variable pour représenter l’objet d’entrée courant dans le bloc de script. Utilisez le $using: scope pour passer des références de variables au bloc de script en cours.

Pour plus d’informations sur ForEach-Object.

Opérateur ternaire

PowerShell 7.0 introduit un opérateur ternaire qui se comporte comme une instruction simplifiée if-else . L’opérateur ternaire de PowerShell est étroitement modélisé à partir de la syntaxe de l’opérateur ternaire C# :

<condition> ? <if-true> : <if-false>

L’expression de la condition est toujours évaluée et son résultat converti en booléen afin de déterminer quelle branche est évaluée ensuite :

  • L’expression <if-true> est exécutée si l’expression <condition> a la valeur true
  • L’expression <if-false> est exécutée si l’expression <condition> a la valeur false

Par exemple:

$message = (Test-Path $path) ? "Path exists" : "Path not found"

Dans cet exemple, si le chemin existe, alors le chemin existe est affiché. Si le chemin n’existe pas, alors le chemin non trouvé est affiché.

Pour plus d’informations sur If.

Opérateurs de chaîne de pipelines

PowerShell 7 implémente les && opérateurs et || pour enchaîner conditionnellement les pipelines. Ces opérateurs sont connus dans PowerShell sous le nom de « opérateurs de chaîne de pipeline », et sont similaires aux listes AND et OR dans des shells comme bash et zsh, ainsi qu’aux symboles de traitement conditionnels dans le Shell de commandes Windows (cmd.exe).

L’opérateur && exécute le pipeline de droite, si le pipeline de gauche a réussi. À l’inverse, l’opérateur || exécute le pipeline de droite si le pipeline de gauche a échoué.

Note

Ces opérateurs utilisent les variables $? et $LASTEXITCODE pour déterminer si un pipeline a échoué. Cela vous permet de les utiliser avec des commandes natives et pas seulement avec des applets de commande ou des fonctions.

Ici, la première commande réussit et la seconde commande est exécutée :

Write-Output 'First' && Write-Output 'Second'
First
Second

Ici, la première commande échoue, la seconde n’est pas exécutée :

Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad

Ici, la première commande réussit, la seconde n’est pas exécutée :

Write-Output 'First' || Write-Output 'Second'
First

Ici, la première commande échoue, donc la seconde commande est exécutée :

Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second

Pour plus d’informations sur les opérateurs de chaînes de pipelines.

Opérateurs de coalescation nulle, d’attribution et conditionnels

PowerShell 7 inclut l’opérateur ??de coalescation nulle , l’attribution ??=conditionnelle nulle , et les opérateurs ?. d’accès conditionnel nul aux membres et ?[].

Opérateur à coalescation nulle ??

L’opérateur ?? de coalescation nulle retourne la valeur de son opérande de gauche s’il n’est pas nul. Sinon, il évalue l’opérande de droite et retourne son résultat. L’opérateur ?? n’évalue pas son opérande droit si l’opérande gauche a la valeur non Null.

$x = $null
$x ?? 100
100

Dans l’exemple suivant, l’opérande de droite ne sera pas évalué :

[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020

Opérateur d’attribution conditionnelle nulle ?? =

L’opérateur ??= d’attribution conditionnelle nulle attribue la valeur de son opérande droit à son opérande de gauche seulement si l’opérande de gauche s’évalue comme nul. L’opérateur ??= n’évalue pas son opérande droit si l’opérande gauche a la valeur non Null.

$x = $null
$x ??= 100
$x
100

Dans l’exemple suivant, l’opérande de droite n’est pas évalué :

[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020

Opérateurs d’accès conditionnels nul ?. et? [] (Expérimental)

Note

Il s’agit d’une fonctionnalité expérimentale nommée PSNullConditionalOperators. Pour plus d’informations, voir Utilisation des caractéristiques expérimentales.

Un opérateur conditionnel nul permet l’accès aux membres, ?., ou l’accès aux éléments, ?[], à son opérande seulement si cet opérande s’évalue comme non-nul ; sinon, il retourne nulle.

Note

Étant donné que PowerShell permet ? faire partie du nom de la variable, la spécification formelle du nom de la variable est requise pour l’utilisation de ces opérateurs. Il est donc nécessaire d’utiliser {} autour des noms de variables comme ${a} ou lorsque ? fait partie du nom ${a?}de la variable .

Dans l’exemple suivant, la valeur de la propriété membre Statut est retournée :

$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped

L’exemple suivant retourne null, sans essayer d’accéder au nom du membre Statut :

$service = $Null
${Service}?.status

De même, en utilisant ?[], la valeur de l’élément est retournée :

$a = 1..10
${a}?[0]
1

Et lorsque l’opérande est nul, l’élément n’est pas accédé et null est retourné :

$a = $null
${a}?[0]

Pour plus d’informations, About_Operators.

Nouvelle vue, ConciseView et cmdlet Get-Error

PowerShell 7.0 améliore l’affichage des messages d’erreur afin d’améliorer la lisibilité des erreurs interactives et de script grâce à une nouvelle vue par défaut, ConciseView. Les vues sont sélectionnables par l’utilisateur via la variable $ErrorViewde préférence .

Avec ConciseView, si une erreur ne provient pas d’une erreur de script ou d’analyseur, alors c’est un message d’erreur d’une ligne :

Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist

Si l’erreur survient lors de l’exécution du script ou s’agit d’une erreur d’analyse, PowerShell renvoie un message d’erreur multiligne contenant l’erreur, un pointeur et un message d’erreur indiquant où se trouve l’erreur dans cette ligne. Si le terminal ne supporte pas les séquences d’échappement des couleurs ANSI (VT100), alors les couleurs ne sont pas affichées.

Affichage des erreurs à partir d’un script

La vue par défaut dans PowerShell 7 est ConciseView. L’ancienne vue par défaut était NormalView et vous pouvez la sélectionner en définissant la variable $ErrorViewpreference.

$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView

Note

Une nouvelle propriété , ErrorAccentColor , $Host.PrivateData est ajoutée pour permettre de changer la couleur d’accent du message d’erreur.

Un nouveau cmdlet Get-Error offre une vue complète et détaillée de l’erreur pleinement qualifiée lorsque désiré. Par défaut, le cmdlet affiche tous les détails, y compris les exceptions internes, de la dernière erreur survenue.

Affichage depuis Get-Error

Le Get-Error cmdlet prend en charge l’entrée du pipeline en utilisant la variable $Errorintégrée . Get-Error affiche toutes les erreurs de canalisation.

$Error | Get-Error

Le Get-Error cmdlet prend en charge le paramètre Newest , vous permettant de spécifier combien d’erreurs de la session en cours vous souhaitez afficher.

Get-Error -Newest 3 # Displays the lst three errors that occurred in the session

Pour plus d’informations sur Get-Error.

Notification de nouvelle version

PowerShell 7 utilise les notifications de mise à jour pour alerter les utilisateurs de l’existence de mises à jour de PowerShell. Une fois par jour, PowerShell interroge un service en ligne pour déterminer si une version plus récente est disponible.

Note

Le contrôle de mise à jour a lieu lors de la première session d’une période donnée de 24 heures. Pour des raisons de performance, la vérification de mise à jour commence 3 secondes après le début de la session. La notification n’est affichée qu’au début des sessions suivantes.

Par défaut, PowerShell s’abonne à l’un des deux canaux de notification différents selon sa version/branche. Les versions supportées et généralement disponibles (GA) de PowerShell ne reviennent que les notifications pour les mises à jour des versions GA. Les versions Preview and Release Candidate (RC) notifient les mises à jour des versions de prévisualisation, RC et GA.

Le comportement de notification de mise à jour peut être modifié à l’aide de la variable d’environnement $Env:POWERSHELL_UPDATECHECK. Les valeurs suivantes sont prises en charge :

  • Par défaut est la même chose que de ne pas définir $Env:POWERSHELL_UPDATECHECK
    • Les versions en disponibilité générale (GA) informent des mises à jour des versions GA
    • Les préversions et versions RC signalent les mises à jour des versions en disponibilité générale et en préversion.
  • Désactive la fonction de notification de mise à jour
  • LTS ne notifie que les mises à jour des versions GA de maintenance à long terme (LTS)

Note

La variable $Env:POWERSHELL_UPDATECHECK environnement n’existe pas tant qu’elle n’est pas réglée pour la première fois.

Pour définir la notification de version uniquement pour LTS les sorties :

$Env:POWERSHELL_UPDATECHECK = 'LTS'

Pour définir la notification de version sur le Default comportement :

$Env:POWERSHELL_UPDATECHECK = 'Default'

Pour plus d’informations Sur les notifications de mise à jour.

Nouveau support des ressources DSC avec Invoke-DSCResource (expérimental)

Note

Il s’agit d’une fonctionnalité expérimentale nommée PSDesiredStateConfiguration.InvokeDscResource. Pour plus d’informations, voir Utilisation des caractéristiques expérimentales.

Le Invoke-DscResource cmdlet exécute une méthode d’une ressource PowerShell Desired State Configuration (DSC) spécifiée.

Ce cmdlet invoque directement une ressource DSC, sans créer de document de configuration. Grâce à ce cmdlet, les produits de gestion de configuration peuvent gérer Windows ou Linux en utilisant les ressources DSC. Ce cmdlet permet également le débogage des ressources lorsque le moteur DSC fonctionne avec le débogage activé.

Cette commande invoque la méthode Set d’une ressource nommée WindowsProcess et fournit les propriétés obligatoires Path et Arguments pour lancer le processus Windows spécifié.

Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
  Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
  Arguments = ''
}

Pour plus d’informations sur Invoke-DSCResource.

Changements et améliorations de rupture

Changements significatifs

  • Supporter les notifications de mise à jour LTS et les canaux par défaut (#11132)
  • La mise à jour Test-Connection pour qu’elle fonctionne plus comme celle de Windows PowerShell (#10697) (Merci @vexx32!)
  • Préserver l’argent ? pour ParenExpression, SubExpression et ArrayExpression (#11040)
  • Définir le répertoire de travail sur le répertoire actuel dans Start-Job (#10920) (Merci @iSazonov!)
  • Faites en sorte $PSCulture reflètent régulièrement les changements de culture pendant la session (#10138) (Merci @iSazonov!)

Mises à jour et corrections du moteur

  • Améliorations des API de points d’arrêt pour les scénarios distants (#11312)
  • Correction de la définition de classe PowerShell qui fuit dans un autre espace d’exécution (#11273)
  • Corriger une régression de mise en forme causée par la primitive FirstOrDefault ajoutée dans 7.0.0-Preview1 (#11258)
  • Modules Microsoft supplémentaires à suivre dans la télémétrie PS7 (#10751)
  • Rendre les fonctionnalités approuvées non expérimentales (#11303)
  • Mettre à jour ConciseView pour utiliser TargetObject si applicable (#11075)
  • Corriger NullReferenceException dans les méthodes publiques CompletionCompleters (#11274)
  • Vérification de l’état du fil de discussion de réparation de l’appartement sur les plateformes non-Windows (#11301)
  • Mise à jour en définissant PSModulePath pour concaténer les variables d’environnement du processus et de la machine (#11276)
  • Passer .NET Core à la version 3.1.0 (#11260)
  • Correction de la détection de $PSHOME devant $env :PATH (#11141)
  • Permettre à pwsh d’hériter de $env :PSModulePath et permettre powershell.exe de démarrer correctement (#11057)
  • Passage à .NET Core 3.1 preview 1 (#10798)
  • Vérifications des tags de refactorisation de la réparation dans le fournisseur du système de fichiers (#10431) (Merci @iSazonov!)
  • Remplacer CR et nouvelle ligne par un caractère 0x23CE dans la journalisation des scripts (#10616)
  • Corrigez une fuite de ressources en désinscrivant le gestionnaire d’événements depuis AppDomain.CurrentDomain.ProcessExit (#10626)
  • Ajoutez la prise en charge à ActionPreference.Break pour passer au déboguage lorsque des messages de débogage, d’erreur, d’information, de progression, de verbe ou d’avertissement sont générés (#8205) (Merci @KirkMunro!)
  • Activez les modules complémentaires du panneau de configuration de démarrage dans PowerShell sans spécifier .CPL extension. (#9828)
  • Supports des chiffres négatifs dans -split opérateur (#8960) (Merci @ece-jacob-scott!)

Mises à jour et correctifs généraux du Cmdlet

  • Correction d’un problème sur Raspbian pour la date de modification des fichiers dans UnixStat Experimental Feature (#11313)
  • Ajouter -AsPlainText à ConvertFrom-SecureString (#11142)
  • Ajout de la vérification de version de WindowsPS pour WinCompat (#11148)
  • Corriger les rapports d’erreurs dans certains scénarios WinCompat (#11259)
  • Ajouter un résolveur binaire natif (#11032) (Merci @iSazonov!)
  • Mise à jour du calcul de la largeur de caractère pour respecter correctement les caractères CJK (#11262)
  • Ajouter Unblock-File pour macOS (#11137)
  • Correction de la régression dans Get-PSCallStack (#11210) (Merci @iSazonov!)
  • Supprimer le chargement automatique du module ScheduledJob lors de l’utilisation des cmdlets Job (#11194)
  • Ajouter OutputType à Get-Error cmdlet et préserver les noms de type originaux (#10856)
  • Corriger la référence nulle dans la propriété SupportsVirtualTerminal (#11105)
  • Ajouter la vérification de la limite dans Get-WinEvent (#10648) (Merci @iSazonov!)
  • Corriger l’exécution de la commande pour que StopUpstreamCommandsException ne soit pas publiée dans -ErrorVariable (#10840)
  • Réglez l’encodage de sortie sur [Console] ::OutputEncoding pour les commandes natives (#10824)
  • Prise en charge des blocs de code multi-lignes dans les exemples (#10776) (Merci @Greg-Smulko!)
  • Ajouter le paramètre Culture à Select-String cmdlet (#10943) (Merci @iSazonov!)
  • Corriger Start-Job chemin de répertoire fonctionnel avec une barre oblique arrière (#11041)
  • ConvertFrom-Json : Déplier les collections par défaut (#10861) (Merci @danstur!)
  • Utilisez la table de hachage sensible à la casse pour Group-Object cmdlet avec les switches -CaseSensitive et -AsHashtable (#11030) (Merci @vexx32!)
  • Gérer l’exception si l’énumération des fichiers échoue lors de la reconstruction du chemin pour avoir le bon boîtier (#11014)
  • Corriger ConciseView pour afficher Activité au lieu de myCommand (#11007)
  • Autoriser les commandelles web à ignorer les statuts d’erreur HTTP (#10466) (Merci @vdamewood!)
  • Réparer la tuyauterie de plusieurs CommandInfo vers Get-Command (#10929)
  • Ajouter Get-Counter cmdlet pour Windows (#10933)
  • Faites en sorte ConvertTo-Json traiter [AutomationNull] ::Value et [NullString] ::Value comme $null (#10957)
  • Supprimer les crochets de l’adresse IPv6 pour la télécommunication SSH (#10968)
  • Corriger le plantage si la commande envoyée à pwsh n’est qu’un espace blanc (#10977)
  • Ajout de Get-Clipboard et Set-Clipboard cross-platform (#10340)
  • Correction : définir le chemin original de l’objet système de fichiers pour qu’il n’y ait pas de barre oblique supplémentaire (#10959)
  • $null support pour ConvertTo-Json (#10947)
  • Réajouter Out-Printer commande sous Windows (#10906)
  • Correction Start-Job -WorkingDirectory avec des espaces blancs (#10951)
  • Retourner la valeur par défaut lors de l’obtention de null pour un réglage dans PSConfiguration.cs (#10963) (Merci @iSazonov!)
  • Gérer l’exception d’E/S comme non-terminant (#10950)
  • Ajouter l’assemblage GraphicalHost pour activer Out-GridView, Show-Command et Get-Help -ShowWindow (#10899)
  • Prenez ComputerName via pipeline dans Get-HotFix (#10852) (Merci @kvprasoon!)
  • Corrigez la complétion des tabulations pour les paramètres afin qu’ils affichent les paramètres communs comme disponibles (#10850)
  • Corrigez GetCorrectCasedPath() pour vérifier d’abord si des entrées système sont retournées avant d’appeler First() (#10930)
  • Définir le répertoire de travail sur le répertoire actuel dans Start-Job (#10920) (Merci @iSazonov!)
  • Modifier TabExpansion2 pour qu’il ne nécessite pas de -CursorColumn et le traiter comme $InputScript.Length (#10849)
  • Gérer le cas où l’hôte ne peut pas retourner les lignes ou colonnes de l’écran (#10938)
  • Corriger l’utilisation des couleurs d’accent pour les hôtes qui ne les supportent pas (#10937)
  • Réajouter Update-List commande (#10922)
  • Mettre à jour l’ID FWLink pour Clear-RecycleBin (#10925)
  • Lors de la fin de l’onglet, passer le fichier si vous ne pouvez pas lire les attributs du fichier (#10910)
  • Réajouter Clear-RecycleBin pour Windows (#10909)
  • Ajouter $env:__SuppressAnsiEscapeSequences pour contrôler s’il faut avoir une séquence d’échappement VT en sortie (#10814)
  • Ajouter -NoEmphasize paramètre pour coloriser Select-String sortie (#8963) (Merci @derek-xia!)
  • Ajouter Get-HotFix cmdlet (#10740)
  • Rendre Add-Type utilisable dans les applications qui hébergent PowerShell (#10587)
  • Utilisez un ordre d’évaluation plus efficace dans LanguagePrimitives.IsNullLike() (#10781) (Merci @vexx32!)
  • Améliorer la gestion des entrées en tuyauterie mixte et des flux en tuyaux dans Format-Hex (#8674) (Merci @vexx32!)
  • Utilisez la conversion de type dans les tables de hachage SSHConnection lorsque la valeur ne correspond pas au type attendu (#10720) (Merci @SeeminglyScience!)
  • Corriger Get-Content -ReadCount 0 comportement lorsque -TotalCount est réglé (#10749) (Merci @eugenesmlv!)
  • Message d’erreur refusé d’accès à la reformulation dans Get-WinEvent (#10639) (Merci @iSazonov!)
  • Activez la complétion de tabulation pour l’affectation de variables qui sont enum ou contraintes de type (#10646)
  • Supprimer la propriété distante SourceLength inutilisée causant des problèmes de mise en forme (#10765)
  • Ajouter -Delimiter paramètre à ConvertFrom-StringData (#10665) (Merci @steviecoaster!)
  • Ajouter un paramètre de position pour ScriptBlock lors de l’utilisation de Invoke-Command avec SSH (#10721) (Merci @machgo!)
  • Afficher les informations de contexte de la ligne si plusieurs lignes sont multiples, mais pas de nom de script pour ConciseView (#10746)
  • Ajouter la prise en charge des chemins \wsl$\ vers le fournisseur du système de fichiers (#10674)
  • Ajouter le texte manquant du jeton pour TokenKind.QuestionMark dans l’analyseur (#10706)
  • Définissez le répertoire de travail courant de chaque script ForEach-Object -Parallel en cours à la même position que le script appelant. (#10672)
  • Remplacez api-ms-win-core-file-l1-2-2.dll par Kernell32.dll pour les API FindFirstStreamW et FindNextStreamW (#10680) (Merci @iSazonov!)
  • Ajuster l’aide au script de formatage pour qu’il soit plus tolérant au StrictMode (#10563)
  • Ajouter -SecurityDescriptorSDDL paramètre à New-Service (#10483) (Merci @kvprasoon!)
  • Supprimer la sortie d’information, consolider l’utilisation du ping dans Test-Connection (#10478) (Merci @vexx32!)
  • Lisez les points de réparation spéciaux sans y accéder (#10662) (Merci @iSazonov!)
  • Sortie Clear-Host directe vers le terminal (#10681) (Merci @iSazonov!)
  • Réajouter une nouvelle ligne pour regrouper avec Format-Table et -Property (#10653)
  • Supprimer [ValidateNotNullOrEmpty] de -InputObject sur Get-Random pour permettre la chaîne vide (#10644)
  • Rendez l’algorithme de distance de chaîne de chaîne de suggestions insensible à la majuscule (#10549) (Merci @iSazonov!)
  • Corriger l’exception de référence nulle dans ForEach-Object -Parallel traitement d’entrée (#10577)
  • Ajouter des définitions de stratégies de groupe PowerShell (#10468)
  • Mettre à jour l’hôte de la console pour prendre en charge les séquences de contrôle XTPUSHSGR/XTPOPSGR VT utilisées dans des scénarios de composabilité. (#10208)
  • Ajouter le paramètre WorkingDirectory à Start-Job (#10324) (Merci @davinci26!)
  • Supprimez le gestionnaire d’événements qui causait la réplique erronée des changements de point d’arrêt vers le débogueur d’espace d’exécution hôte (#10503) (Merci @KirkMunro!)
  • Remplacez api-ms-win-core-job-12-1-0.dll par Kernell32.dll dans Microsoft.PowerShell.Commands.NativeMethods P/Invoke API (#10417) (Merci @iSazonov!)
  • Corriger une mauvaise sortie pour New-Service dans l’assignation des variables et -OutVariable (#10444) (Merci @kvprasoon!)
  • Corriger les problèmes globaux liés au code de sortie, aux paramètres de ligne de commande et au chemin avec espaces (#10461)
  • Corriger la récursivité dans OneDrive - changer FindFirstFileEx() pour utiliser le type SafeFindHandle (#10405)
  • Évitez le chargement automatique de PSReadLine sous Windows si le lecteur d’écran NVDA est actif (#10385)
  • Augmenter les versions des modules construits avec PowerShell à 7.0.0.0 (#10356)
  • Ajouter une erreur de lancer dans Add-Type si un type portant le même nom existe déjà (#9609) (Merci @iSazonov!)

Performance

  • Évitez d’utiliser la clôture dans Parser.SaveError (#11006)
  • Améliorer la mise en cache lors de la création de nouvelles instances Regex (#10657) (Merci @iSazonov!)
  • Améliorer le traitement des données de type intégrées PowerShell à partir de types.ps1xml, typesV3.ps1xml et GetEvent.types.ps1xml (#10898)
  • Mettre à jour PSConfiguration.ReadValueFromFile pour le rendre plus rapide et plus efficace en mémoire (#10839)
  • Ajouter de petites améliorations de performance pour l’initialisation de l’espace d’exécution (#10569) (Merci @iSazonov!)
  • Rendre ForEach-Object plus rapide pour ses scénarios couramment utilisés (#10454) et corriger ForEach-Object -Parallel problème de performance avec de nombreux espaces de jeu (#10455)

Nettoyage du code

  • Modifier le texte des commentaires et des éléments pour qu’ils respectent les normes Microsoft (#11304)
  • Problèmes de style de nettoyage dans Compiler.cs (#10368) (Merci @iSazonov!)
  • Retirez le convertisseur de types inutilisé pour CommaDelimitedStringCollection (#11000) (Merci @iSazonov!)
  • Style de nettoyage dans InitialSessionState.cs (#10865) (Merci @iSazonov!)
  • Nettoyage du code pour la classe PSSession (#11001)
  • Supprimez la fonctionnalité « exécuter Update-Help non fonctionnelle de Get-Help lorsque Get-Help s’exécute pour la première fois » (#10974)
  • Problèmes de style de correction (#10998) (Merci @iSazonov!)
  • Nettoyage : utilisez l’alias intégré (#10882) (Merci @iSazonov!)
  • Supprimez la touche de réglage inutilisée ConsolePrompting et évitez la création de chaînes inutiles lors de l’interrogation du paramètre ExecutionPolicy (#10985)
  • Désactiver la vérification des notifications de mise à jour pour les builds quotidiens (#10903) (Merci @bergmeister!)
  • Rétablir l’API de débogage perdue dans #10338 (#10808)
  • Supprimer la référence WorkflowJobSourceAdapter qui n’est plus utilisée (#10326) (Merci @KirkMunro!)
  • Le nettoyage COM s’interface dans le code de liste de saut en corrigeant les attributs PreserveSig (#9899) (Merci @weltkante!)
  • Ajoutez un commentaire expliquant pourquoi -ia n’est pas l’alias pour -InformationAction paramètre commun (#10703) (Merci @KirkMunro!)
  • Renommer InvokeCommandCmdlet.cs en InvokeExpressionCommand.cs (#10659) (Merci @kilasuit!)
  • Ajouter de petits nettoyages de code liés aux notifications de mise à jour (#10698)
  • Supprimer la logique de workflow obsolète des scripts de configuration à distance (#10320) (Merci @KirkMunro!)
  • Mettre à jour le format d’aide pour utiliser le boîtier approprié (#10678) (Merci @tnieto88!)
  • Nettoyer les problèmes de type CodeFactor arrivant dans les commits depuis un mois (#10591) (Merci @iSazonov!)
  • Corriger une faute de frappe dans la description de la fonctionnalité expérimentale PSTernaryOperator (#10586) (Merci @bergmeister!)
  • Convertir ActionPreference.Suspendre la valeur d’énumération en un état réservé non supporté, et supprimer la restriction sur l’utilisation d’ActionPreference.Ignorer dans les variables de préférence (#10317) (Merci @KirkMunro!)
  • Remplacez ArrayList par List<T> pour obtenir un code plus lisible et fiable sans changer de fonctionnalité (#10333) (Merci @iSazonov!)
  • Corriger le style de code de TestConnectionCommand (#10439) (Merci @vexx32!)
  • Nettoyage d’AutomationEngine et suppression de l’appel de méthode supplémentaire SetSessionStateDrive (#10416) (Merci @iSazonov!)
  • Renommer ParameterSetName par défaut en Delimiter for ConvertTo-Csv and ConvertFrom-Csv (#10425)

Tools

  • Ajout d’un paramètre par défaut pour la propriété SDKToUse afin qu’il se construise dans VS (#11085)
  • Install-Powershell.ps1: Ajouter un paramètre pour utiliser l’installation MSI (#10921) (Merci @MJECloud!)
  • Ajoutez des exemples de base pour install-powershell.ps1 (#10914) (Merci @kilasuit!)
  • Faire en sorte Install-PowerShellRemoting.ps1 gère la chaîne vide dans le paramètre PowerShellHome (#10526) (Merci @Orca88!)
  • Passer de /etc/lsb-release à /etc/os-release dans install-powershell.sh (#10773) (Merci @Himura2la!)
  • Vérifiez pwsh.exe et pwsh en version quotidienne sur Windows (#10738) (Merci @centreboard!)
  • Retirer le robinet inutile dans installpsh-osx.sh (#10752)
  • Mise à jour install-powershell.ps1 pour vérifier la version quotidienne déjà installée (#10489)

Épreuves

  • Rendez le test DSC non fiable en attente (#11131)
  • Test de correction des stringdata pour valider correctement les clés des tables de hachage (#10810)
  • Décharger les modules de test (#11061) (Merci @iSazonov!)
  • Augmenter le temps entre les tentatives de l’URL de test (#11015)
  • Mettez à jour les tests pour décrire avec précision les actions de test. (#10928) (Merci @romero126!)
  • Sauter temporairement le test instable TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
  • Stabiliser le test de fuite du gestionnaire d’événements (#10790)
  • Synchronisation en majuscules dans CI YAML (#10767) (Merci @RDIL!)
  • Test d’ajout pour la correction de fuite du gestionnaire d’événements (#10768)
  • Ajouter Get-ChildItem test (#10507) (Merci @iSazonov!)
  • Remplacez le langage ambigu des tests de bascule à paramètre pour la précision (#10666) (Merci @romero126!)
  • Ajouter une vérification expérimentale à ForEach-Object -Parallel tests (#10354) (Merci @KirkMunro!)
  • Tests de mise à jour pour la validation Alpine (#10428)

Améliorations de la construction et des packs

  • Corriger la signature de paquets Nuget pour la compilation coordonnée du paquet (#11316)
  • Mettre à jour les dépendances de PowerShell Gallery et NuGet (#11323)
  • Passez Microsoft.ApplicationInsights de la version 2.11.0 à la version 2.12.0 (#11305)
  • Passez Microsoft.CodeAnalysis.CSharp de la version 3.3.1 à la 3.4.0 (#11265)
  • Mises à jour des paquets pour Debian 10 et 11 (#11236)
  • Ne permettre les fonctionnalités expérimentales qu’avant RC (#11162)
  • Mise à jour de la version minimale de macOS (#11163)
  • Passez NJsonSchema de 10.0.27 à 10.0.28 (#11170)
  • Mise à jour des liens dans README.md et metadata.json pour Preview.5 (#10854)
  • Sélectionnez les fichiers pour les tests de conformité qui appartiennent à PowerShell (#10837)
  • Autoriser le package msix win7x86 à se construire. (Interne 10515)
  • Permettre de passer des versions sémantiques à la fonction NormalizeVersion (#11087)
  • Passez le framework core de .NET à 3.1-preview.3 (#11079)
  • Faire passer PSReadLine de la version 2.0.0-beta5 à la 2.0.0-beta6 dans /src/Modules (#11078)
  • Passez Newtonsoft.Json de 12.0.2 à 12.0.3 (#11037) (#11038)
  • Ajouter les paquets Debian 10, 11 et CentOS 8 (#11028)
  • Téléverser Build-Info fichier Json avec le champ ReleaseDate (#10986)
  • Passez le framework core de .NET à 3.1-preview.2 (#10993)
  • Activation de la compilation du package x86 MSIX (#10934)
  • Mettre à jour l’URL du script d’installation du SDK dotnet dans build.psm1 (#10927)
  • Écartez Markdig. Signé de 0.17.1 à 0.18.0 (#10887)
  • Déplacer ThreadJob de la version 2.0.1 à la 2.0.2 (#10886)
  • Mettre à jour le module manifeste et packaging AppX pour qu’il se conforme aux exigences du MS Store (#10878)
  • Mettre à jour la référence du paquet pour le SDK PowerShell vers preview.5 (Interne 10295)
  • Mise à jour ThirdPartyNotices.txt (#10834)
  • Passez Microsoft.PowerShell.Native à 7.0.0-preview.3 (#10826)
  • Passez Microsoft.ApplicationInsights de la version 2.10.0 à la 2.11.0 (#10608)
  • Passez NJsonSchema de 10.0.24 à 10.0.27 (#10756)
  • Ajouter le support des MacPorts au système de compilation (#10736) (Merci @Lucius-Q-User!)
  • Passer de la 1.4.4 à la 1.4.5 (#10728)
  • Passer de 10.0.23 à 10.0.24 (#10635)
  • Ajouter une variable d’environnement pour différencier la télémétrie client/serveur dans MSI (#10612)
  • Faire passer PSDesiredStateConfiguration de 2.0.3 à 2.0.4 (#10603)
  • Passez Microsoft.CodeAnalysis.CSharp de 3.2.1 à 3.3.1 (#10607)
  • Mise à jour vers .Net Core 3.0 RTM (#10604) (Merci @bergmeister!)
  • Mettre à jour l’emballage MSIX pour que la version soit conforme aux exigences du Windows Store (#10588)
  • Passer PowerShellGet de la version 2.2 à la 2.2.1 (#10382)
  • Passer à la version 1.4.3 de PackageManagement à 1.4.4 (#10383)
  • Mise à jour README.md et metadata.json pour 7.0.0-preview.4 (10011 interne)
  • Mise à jour de la version .Net Core 3.0 de Preview 9 à RC1 (#10552) (Merci @bergmeister!)
  • Génération de liste de fonctionnalités Fixer ExperimentalFeature (Interne 9996)
  • Passez la version PSReadLine de la 2.0.0-beta4 à la 2.0.0-beta5 (#10536)
  • Corriger le script de build release pour définir le tag release
  • Mise à jour de Microsoft.PowerShell.Native vers 7.0.0-preview.2 (#10519)
  • Mise à jour vers Netcoreapp3.0 preview9 (#10484) (Merci @bergmeister!)
  • Assure-toi que la construction coordonnée quotidienne sache que c’est une construction quotidienne (#10464)
  • Mettre à jour la compilation combinée du paquet pour publier les versions quotidiennes (#10449)
  • Suppression de la référence (#10445) (Merci @RDIL!)
  • Passer de la version NJsonSchema de 10.0.22 à 10.0.23 (#10421)
  • Supprimez la suppression du dossier de compilation linux-x64 car certaines dépendances pour Alpine en ont besoin (#10407)

Documentation et contenu d’aide

  • Refactorisation des journaux de modification en un journal par version (#11165)
  • Corriger FWLinks pour les documents d’aide en ligne de PowerShell 7 (#11071)
  • Mise à jour CONTRIBUTING.md (#11096) (Merci @mklement0!)
  • Liens pour la documentation d’installation dans README.md (#11083)
  • Ajoute des exemples à install-powershell.ps1 script (#11024) (Merci @kilasuit!)
  • Correction de Select-String accent et Import-DscResource dans CHANGELOG.md (#10890)
  • Supprimer le lien obsolète de powershell-beginners-guide.md (#10926)
  • Logs de modifications stables et de maintenance de fusion (#10527)
  • Mise à jour utilisée en version .NET dans la documentation de compilation (#10775) (Merci @Greg-Smulko!)
  • Remplacer les liens de MSDN vers Microsoft Learn dans powershell-beginners-guide.md (#10778) (Merci @iSazonov!)
  • Lien de présentation de la correction cassée du DSC (#10702)
  • Mettre à jour Support_Question.md pour lier Stack Overflow en tant qu’autre ressource communautaire (#10638) (Merci @mklement0!)
  • Ajouter l’architecture du processeur au modèle de requête de distribution (#10661)
  • Ajouter un nouveau livre de MoL PowerShell à la documentation PowerShell d’apprentissage (#10602)
  • Mise à jour README.md et métadonnées pour les versions v6.1.6 et v6.2.3 (#10523)
  • Corriger une faute de frappe dans README.md (#10465) (Merci @vedhasp!)
  • Ajoutez une référence au module PSKoans dans la documentation des ressources d’apprentissage (#10369) (Merci @vexx32!)
  • Mise à jour README.md et metadata.json pour 7.0.0-preview.3 (#10393)