Partager via


Nouveautés de PowerShell Core 6.2

La version PowerShell Core 6.2 offre de meilleures performances, des correctifs de bogues, des applets de commande plus compactes et un meilleur langage, garantissant plus de qualité. Pour voir une liste complète des améliorations, consultez nos journaux de modifications détaillés sur GitHub.

Fonctionnalités expérimentales

Les fonctionnalités expérimentales étaient auparavant prises en charge. La version 6.2 propose quatre fonctionnalités expérimentales à tester. Veuillez nous faire part de vos commentaires pour nous permettre apporter des améliorations et décider si la fonctionnalité mérite d’être implémentée.

Utilisez Get-ExperimentalFeature pour obtenir la liste des fonctionnalités expérimentales disponibles. Vous pouvez activer ou désactiver ces fonctionnalités avec Enable-ExperimentalFeature et Disable-ExperimentalFeature.

Suggestions en cas de commande introuvable

Cette fonctionnalité utilise la correspondance approximative afin de rechercher des suggestions pour les commandes ou applets de commande que vous avez peut-être mal saisies.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Exemple

Dans cet exemple, le nom de l’applet de commande mal orthographié est mis en correspondance avec plusieurs suggestions, par ordre de probabilité.

Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.

Traitement par lot de la communication à distance implicite

Lorsque vous utilisez la communication à distance implicite dans un pipeline, PowerShell traite chaque commande du pipeline de manière indépendante. Les objets sont sérialisés et de-serialized à plusieurs reprises entre le client et le système distant lors de l’exécution du pipeline.

Avec cette fonctionnalité, PowerShell analyse le pipeline afin de déterminer si la commande peut s’exécuter sans risque et existe sur le système cible. Si la valeur est true, PowerShell exécute à distance l’ensemble du pipeline, puis sérialise et de-serializes les résultats retournés au client.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Un test de Get-Process | Sort-Object en conditions réelles via localhost réduit le délai de 10-15 secondes à 20-30 millisecondes. La fonctionnalité doit uniquement être activée sur le client. Aucune modification n’est nécessaire sur le serveur.

Lecteur temporaire

Enable-ExperimentalFeature -Name PSTempDrive

Si vous utilisez PowerShell Core sur différents systèmes d’exploitation, vous découvrirez que la variable d’environnement pour rechercher le répertoire temporaire est différente sur Windows, macOS et Linux ! Avec cette fonctionnalité, vous obtenez un PSDrive appelé Temp: et automatiquement mappé au dossier temporaire du système d’exploitation que vous utilisez.

Exemple

PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!

N’oubliez pas que les commandes de fichier natives (telles que ls sur Linux) ne reconnaissent pas les PSDrives et n’affichent pas le lecteur Temp:.

Expansion des abréviations

Les applets de commande PowerShell sont supposées afficher des noms descriptifs. Cela entraîne des noms longs plus difficiles à saisir. Cette fonctionnalité vous permet de saisir simplement les caractères majuscules de l’applet de commande et d’utiliser la saisie semi-automatique via la touche Tab pour rechercher une correspondance.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Exemple

PS> i-arsavsf

Si vous appuyez sur la touche Tab et que le module Azure PowerShell Az est installé, la saisie semi-automatique sera appliquée à :

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Notes

Cette fonctionnalité est destinée à être utilisée de manière interactive. Les formes abrégées des applets de commande ne peuvent pas être exécutées. Cette fonctionnalité ne remplace pas les alias.

Dernières modifications

  • Correction du comportement de -NoEnumerate dans Write-Output pour le rendre cohérent avec Windows PowerShell. (#9069)
  • Rendre Join-String -InputObject 1,2,3 le résultat égal au 1,2,3 | Join-String résultat (#8611) (merci @sethvs!)
  • Ajouter -Stable à Sort-Object et tests associés (#7862) (merci @KirkMunro!)
  • Améliorer l’applet Start-Sleep de commande pour accepter des fractions de secondes (#8537) (merci @Prototyyppi!)
  • Modification de la table de hachage pour rendre OrdinalIgnoreCase case-insensitive dans toutes les cultures (#8566)
  • Correction de LiteralPath dans Import-Csv pour lier à la Get-ChildItem sortie (#8277) (merci @iSazonov!)
  • N’ignore plus une colonne sans nom si le délimiteur de guillemets doubles est utilisé dans Import-Csv (#7899) (merci) @Topping!)
  • Get-ExperimentalFeature ne comporte plus de commutateur -ListAvailable (#8318)
  • Le paramètre Debug définit $DebugPreference maintenant continue au lieu de Inquire (#8195) (merci @KirkMunro!)
  • Honorer -OutputFormat si spécifié dans une commande non interactive, redirigée, encodée utilisée avec pwsh (#8115)
  • Chargement de l’assembly à partir du chemin de base du module avant d’essayer de le charger à partir du GAC (#8073)
  • Suppression du tilde des packages en version préliminaire Linux (#8244)
  • Déplacement du traitement de -WorkingDirectory avant le traitement des profils (#8079)
  • Ne pas ajouter PATHEXT de variable d’environnement sur Unix (#7697) (merci @iSazonov!)

Problèmes connus

  • La communication à distance sur les plateformes Windows IOT ARM entraîne un problème de chargement des modules. Voir (#8053)

Mises à jour et correctifs généraux

  • Activation de la saisie semi-automatique via la touche Tab pour les fichiers et dossiers sur le système de fichiers respectant la casse (#8128)
  • Rendre PSVersionInfo.PSVersion et PSVersionInfo.PSEdition publics (#8054) (merci @KirkMunro!)
  • Ajouter l’inférence de type pour $_ / $PSItem les blocs in catch{ } (#8020) (merci @vexx32!)
  • Correction de l’inférence de type d’appel de méthode statique (#8018) (merci @SeeminglyScience!)
  • Create types déduits pour Select-Object, Group-Object, PSObject et Hashtable (#7231) (merci@powercode!)
  • Prise en charge de la méthode d’appel avec les paramètres de type ByRef-like (#7721)
  • Gestion du cas où le chemin d’accès du module Windows PowerShell est déjà dans l’élément PSModulePath de l’environnement (#7727)
  • Activation des applets de commande SecureString pour Non-Windows en stockant le texte brut (#9199)
  • Amélioration du message d’erreur sur les systèmes non Windows lors de l’importation de clixml avec securestring (#7997)
  • Ajout du paramètre ReplyTo à Send-MailMessage (#8727) (merci @replicaJunction!)
  • Ajout d’un message obsolète à Send-MailMessage (#9178)
  • Correctif Restart-Computer pour travailler sur localhost en l’absence de WinRM (#9160)
  • Amener Start-Job à générer une erreur de fin d’exécution lorsque PowerShell est hébergé (#9128)
  • Ajouter des accélérateurs et suffixes de type de style C# pour les littéraux ushort, uint, ulong et courts (#7813) (merci @vexx32!)
  • Ajout de nouveaux suffixes pour les littéraux numériques - voir about_Numeric_Literals (#7901) (merci @vexx32!)
  • Signaler correctement le niveau d’impact lorsque SupportsShouldProcess n’est pas défini sur « true » (#8209) (merci @vexx32!)
  • Correction des problèmes de charset de requête dans les applets de commande web (#8742) (merci @markekraus!)
  • Correction du problème d’attente 100-continue avec les applets de commande web (#8679) (merci @markekraus!)
  • Correction du problème de blocage de fichiers avec les applets de commande web (#7676) (merci @Claustn!)
  • Correction du problème d’analyse de page de codes dans Invoke-RestMethod (#8694) (merci @markekraus!)
  • Refactorisation de ConvertTo-Json pour exposer JsonObject.ConvertToJson comme une API publique (#8682)
  • Ajouter la profondeur maximale configurable dans ConvertFrom-Json avec -Depth (#8199) (merci @louistio!)
  • Ajouter le paramètre EscapeHandling dans l’applet ConvertTo-Json de commande (#7775) (merci @iSazonov!)
  • Ajout de -CustomPipeName à pwsh et Enter-PSHostProcess (#8889)
  • Activation de la création de liens symboliques relatifs sur Windows avec New-Item (8783 #)
  • Autoriser les utilisateurs Windows en mode développeur à créer des liens symboliques sans élévation (#8534)
  • Activation de Write-Information pour accepter $null (#8774)
  • Correctif Get-Help pour les fonctions avancées avec contenu d’aide MAML (8353 #)
  • Correction Get-Help du problème PSTypeName avec -Parameter quand un seul paramètre est déclaré (#8754) (merci @pougetat!)
  • Correction du calcul du jeton pour Get-Help exécuté sur ScriptBlock pour l’aide sur les commentaires. (#8238) (Merci @hubuk!)
  • Modifier Get-Help le paramètre -Parameter de l’applet de commande pour qu’il accepte les tableaux de chaînes (#8454) (merci) @sethvs!)
  • Résoudre pager si son chemin contient des espaces (#8571) (merci @pougetat!)
  • Ajout d’une invite pour utiliser less dans la fonction 'help' afin d’indiquer à utilisateur comment quitter (#7998)
  • Ajouter les types enum et char de prise en charge dans Format-Hex l’applet de commande (#8191) (merci @iSazonov!)
  • Suppression de ShouldProcess de Format-Hex (#8178)
  • Ajouter de nouveaux paramètres Offset et Count à Format-Hex et refactoriser l’applet de commande (#7877) (merci @iSazonov!)
  • Autorisez 'name' comme clé d’alias pour 'label' dans ConvertTo-Html, autorisez l’entrée 'width' à être un entier (#8426) (merci @mklement0!)
  • Faire en sorte que les propriétés calculées basées sur scriptblock fonctionnent à nouveau dans ConvertTo-Html (#8427) (merci @mklement0!)
  • Ajouter une applet de commande Join-String pour créer du texte à partir d’une entrée de pipeline (#7660) (merci @powercode!)
  • Correction Join-String de la logique de paramètre FormatString de l’applet de commande (#8449) (merci @sethvs!)
  • Retour de Clear-Host à $RAWUI et autorisation d’utiliser la communication à distance (#8609)
  • Modification de Clear-Host en [console]::clear et suppression des alias clairs d’Unix (#8603)
  • Correction de LiteralPath dans Import-Csv pour lier à Get-ChildItem la sortie (#8277) (Merci @iSazonov!)
  • la fonction help ne devrait pas utiliser la radiomessagerie pour AliasHelpInfo (#8552)
  • Ajouter -UseMinimalHeader à Start-Transcript pour réduire l’en-tête de transcription (#8402) (Merci @lukexjeremy!)
  • Ajouter les applets de commande Enable-ExperimentalFeature et Disable-ExperimentalFeature (#8318)
  • Exposition de toutes les applets de commande depuis PSDiagnostics si logman.exe est disponible (#8366)
  • Supprimer le paramètre Persist de New-PSDrive la non-Windows plateforme (#8291) (Merci @lukexjeremy!)
  • Ajouter la prise en charge de cd + (#7206) (Merci @bergmeister!)
  • Autoriser Set-Location -LiteralPath à utiliser des dossiers nommés - et + (#8089)
  • Test-Path retourne $false lorsqu’une valeur vide ou $null de chemin d’accès est donnée (#8080) (Merci @vexx32!)
  • Autoriser le renvoi d’un paramètre dynamique même si le chemin d’accès ne correspond à aucun fournisseur (#7957)
  • Prise en charge de Get-PSHostProcessInfo et Enter-PSHostProcess sur les plateformes Unix (#8232)
  • Réduire les allocations dans Get-Content l’applet de commande (#8103) (Merci @iSazonov!)
  • Autoriser Add-Content à partager l’accès en lecture avec d’autres outils pendant l’écriture de contenu (#8091)
  • Get/Add-Content lève une erreur améliorée lors du ciblage d’un conteneur (#7823) (Merci @kvprasoon!)
  • Ajouter -Nameles paramètres et -NoUserOverrides-ListAvailable à l’applet Get-Culture de commande (#7702) (Merci @iSazonov!)
  • Ajout d’un attribut unifié pour finaliser le paramètre Encoding. (#7732) (Merci @ThreeFive-O!)
  • Autoriser les ID numériques et le nom des pages de code inscrites dans paramètres d’encodage (#7636) (Merci @iSazonov!)
  • Correction Rename-Item -Path avec caractère générique (#7398) (Merci @kwkam!)
  • Lors de l’utilisation Start-Transcript et le fichier existe, le fichier vide plutôt que la suppression (#8131) (Merci @paalbra!)
  • Créez Add-Type open source fichiers avec FileAccess.Read et FileShare.Read explicitement (#7915) (Merci@IISResetMe!)
  • Correctif Enter-PSSession -ContainerId pour la dernière version Windows (#7883)
  • Vérification que la propriété NestedModules est remplie par Test-ModuleManifest (#7859)
  • Ajouter la %F casse à Get-Date -UFormat (#7630) (Merci @britishben!)
  • Correction de Set-Service -Status Stopped l’arrêt des services avec dépendances (#5525) (Merci @zhenggu!)