Partager via


Nouveautés de PowerShell Core 6.2

La version PowerShell Core 6.2 s’est concentrée sur les améliorations de performances, la correction de bugs, ainsi que sur des améliorations plus petites de cmdlets et de langage qui améliorent la qualité. Pour voir la liste complète des améliorations, consultez nos journaux de modifications détaillés sur GitHub.

Fonctionnalités expérimentales

Auparavant, nous activions le support des fonctionnalités expérimentales. Dans la version 6.2, nous avons quatre fonctionnalités expérimentales à essayer. Merci de nous donner votre avis afin que nous puissions apporter des améliorations et décider si la fonctionnalité mérite d’être promoue au statut grand public.

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

Suggestions de commandement non trouvé

Cette fonctionnalité utilise le jumelage flou pour trouver des suggestions de commandes ou de commandes que vous auriez pu mal taper.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Example

Dans cet exemple, le nom du cmdlet mal orthographié est flou correspondant à plusieurs suggestions allant du plus probable au moins probable.

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 implicite à distance

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

Grâce à cette fonctionnalité, PowerShell analyse le pipeline pour déterminer si la commande est sûre à exécuter et si elle existe sur le système cible. Lorsque c’est vrai, PowerShell exécute l’ensemble du pipeline à distance et ne sérialise que les de-serializes résultats vers le client.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Un test réel de Get-Process | Sort-Object surlocalhost passe de 10-15 secondes à 20-30 millisecondes. La fonctionnalité n’a besoin d’être activée que sur le client. Aucun changement n’est nécessaire sur le serveur.

Entraînement 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 trouver le répertoire temporaire est différente sous Windows, macOS et Linux ! Avec cette fonctionnalité, vous obtenez un appel Temp:PSDrive qui est automatiquement mappé au dossier temporaire du système d’exploitation que vous utilisez.

Example

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

Sachez que les commandes de fichiers natives (comme ls sous Linux) ne connaissent pas PSDrives et ne verront pas ce Temp: disque.

Expansion des abréviations

Les cmdlets PowerShell sont censés comporter des noms descriptifs. Cela donne des noms longs et plus difficiles à taper. Cette fonction vous permet simplement de taper les caractères majuscules du cmdlet et d’utiliser la complétion d’onglet pour trouver une correspondance.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Example

PS> i-arsavsf

Si vous appuyez sur tab et que le module Azure PowerShell Az est installé, il s’autocomplétera vers :

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Note

Cette fonctionnalité est conçue pour être utilisée de manière interactive. Les formes abrégées de cmdlets ne peuvent pas être exécutées. Cette fonctionnalité ne remplace pas les alias.

Changements significatifs

  • Corrigez -NoEnumerate le comportement Write-Output pour qu’il soit cohérent avec Windows PowerShell. (#9069)
  • Rendez Join-String -InputObject 1,2,3 le résultat égal au 1,2,3 | Join-String résultat (#8611) (Merci @sethvs!)
  • Ajouter -Stable des Sort-Object tests et des tests associés (#7862) (Merci @KirkMunro!)
  • Améliorer Start-Sleep le cmdlet pour accepter les fractions de seconde (#8537) (Merci @Prototyyppi!)
  • Changer le hachage pour utiliser OrdinalIgnoreCase dans case-insensitive toutes les cultures (#8566)
  • Corrigez LiteralPath pour Import-Csv lier à Get-ChildItem la sortie (#8277) (Merci @iSazonov!)
  • On ne saute plus une colonne sans nom si un délimiteur de guillemets doubles est utilisé dans Import-Csv (#7899) (Merci @Topping!)
  • Get-ExperimentalFeature On n’a -ListAvailable plus de switch (#8318)
  • Le paramètre de débogage est désormais placé $DebugPreference sur Continue au lieu d’Inquire (#8195) (Merci @KirkMunro!)
  • Honor -OutputFormat si spécifié dans une commande non interactive, redirigée, encodée utilisée avec pwsh (#8115)
  • Chargez l’assemblage depuis le chemin de la base du module avant d’essayer de charger depuis le GAC (#8073)
  • Supprimer tilde des paquets de prévisualisation Linux (#8244)
  • Déplacer le traitement avant -WorkingDirectory le traitement des profils (#8079)
  • Ne pas ajouter PATHEXT de variable d’environnement sur Unix (#7697) (Merci @iSazonov!)

Problèmes connus

  • Le remot à distance sur les plateformes Windows IOT ARM présente un problème pour charger les modules. Voir (#8053)

Mises à jour générales et corrections

  • Activez la complétion d’onglet insensible à la majuscule pour les fichiers et dossiers sur le système de fichiers sensible à la majuscule (#8128)
  • Rendez PSVersionInfo.PSVersion et PSVersionInfo.PSEdition publics (#8054) (Merci @KirkMunro!)
  • Inférence de type d’ajout pour $_ / $PSItem in catch{ } blocks (#8020) (Merci @vexx32!)
  • Corriger l’inférence statique d’invocation de méthode (#8018) (Merci @SeeminglyScience!)
  • Créer des types inférés pour Select-Object, Group-Object, PSObject et Hashtable (#7231) (Merci @powercode!)
  • Méthode d’appel de support avec ByRef-like paramètres de type (#7721)
  • Gérer le cas où le chemin du module Windows PowerShell est déjà dans le PSModulePath de l’environnement (#7727)
  • Activez SecureString les commandes pour les non-Windows en stockant le texte clair (#9199)
  • Message d’erreur d’amélioration sur non-Windows lors de l’importation de clixml avec securestring (#7997)
  • Ajout du paramètre ReplyTo à Send-MailMessage (#8727) (Merci @replicaJunction!)
  • Ajouter le message Obsolète à Send-MailMessage (#9178)
  • Correctif Restart-Computer à réparer localhost lorsque WinRM n’est pas présent (#9160)
  • Erreur de terminaison de projection lorsque Start-Job PowerShell est hébergé (#9128)
  • Ajoutez des accélérateurs de type C# et des suffixes pour les lettres ushort, uint, ulong et short (#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 réglé sur « vrai » (#8209) (Merci @vexx32!)
  • Problèmes de jeu de caractères pour la demande de correction dans les commandets web (#8742) (Merci @markekraus!)
  • Correction Expect 100-continue problème avec les commandes Web (#8679) (Merci @markekraus!)
  • Correction du problème de blocage de fichiers avec les commandets web (#7676) (Merci @Claustn!)
  • Correction du problème d’analyse des pages de code dans Invoke-RestMethod (#8694) (Merci @markekraus!)
  • Refactorisation ConvertTo-Json pour exposer JsonObject.ConvertToJson en tant qu’API publique (#8682)
  • Ajoutez une profondeur ConvertFrom-Json maximale configurable avec -Depth (#8199) (Merci @louistio!)
  • Ajouter le paramètre EscapeHandling dans ConvertTo-Json le cmdlet (#7775) (Merci @iSazonov!)
  • Ajouter -CustomPipeName à pwsh et Enter-PSHostProcess (#8889)
  • Activer la création de liens symboliques relatifs sur Windows avec New-Item (#8783)
  • Permettre aux utilisateurs Windows en mode développeur de créer des liens symbétiques sans élévation (#8534)
  • Autoriser Write-Information l’acceptation $null (#8774)
  • Correction Get-Help pour fonctions avancées avec contenu d’aide MAML (#8353)
  • Corriger Get-Help le problème de PSTypeName avec -Parameter lorsqu’un seul paramètre est déclaré (#8754) (Merci @pougetat!)
  • Correction du calcul de jeton exécutée Get-Help sur ScriptBlock pour obtenir de l’aide aux commentaires. (#8238) (Merci @hubuk!)
  • Changer Get-Help le paramètre cmdlet -Parameter pour qu’il accepte les tableaux de chaînes (#8454) (Merci @sethvs!)
  • Résoudre le PAGER si son chemin contient des espaces (#8571) (Merci @pougetat!)
  • Ajouter une invite à l’utilisation de less dans la fonction « aide » pour indiquer à l’utilisateur comment quitter (#7998)
  • Ajoutez les types d’enum et de personnages de support dans Format-Hex le cmdlet (#8191) (Merci @iSazonov!)
  • Supprimer ShouldProcess de Format-Hex (#8178)
  • Ajouter de nouveaux paramètres de décalage et de comptage et Format-Hex refactorer le cmdlet (#7877) (Merci @iSazonov!)
  • Autoriser « name » comme clé alias pour « label » dans ConvertTo-Html, autoriser l’entrée « width » à être un entier (#8426) (Merci @mklement0!)
  • Faites fonctionner à nouveau les propriétés calculées basées sur des blocs de script dans ConvertTo-Html (#8427) (Merci @mklement0!)
  • Ajouter un cmdlet Join-String pour créer du texte à partir de l’entrée pipeline (#7660) (Merci @powercode!)
  • Fix Join-String cmdlet FormatString parameter logic (#8449) (Merci @sethvs!)
  • Revenir Clear-Host à utiliser $RAWUI et dégager au travail sur le télécommandement (#8609)
  • Changer Clear-Host en simplement appelé [console]::clear et supprimer l’alias clair d’Unix (#8603)
  • Corrigez LiteralPath pour Import-Csv lier à Get-ChildItem la sortie (#8277) (Merci @iSazonov!)
  • la fonction d’aide ne devrait pas utiliser le pager pour AliasHelpInfo (#8552)
  • Ajouter -UseMinimalHeader to Start-Transcript pour minimiser l’en-tête de transcription (#8402) (Merci @lukexjeremy!)
  • Ajouter Enable-ExperimentalFeature et Disable-ExperimentalFeature commander (#8318)
  • Exposez tous les cmdlets de PSDiagnostics si logman.exe est disponible (#8366)
  • Supprimer le paramètre Persister de New-PSDrive la non-Windows plateforme (#8291) (Merci @lukexjeremy!)
  • Ajouter un support pour cd + (#7206) (Merci @bergmeister!)
  • Activer Set-Location -LiteralPath la collaboration avec des dossiers nommés - et + (#8089)
  • Test-Path revient $false lorsqu’on a une valeur vide ou $null de chemin (#8080) (Merci @vexx32!)
  • Permettre que le paramètre dynamique soit retourné même si le chemin ne correspond à aucun fournisseur (#7957)
  • Support Get-PSHostProcessInfo et Enter-PSHostProcess sur plateformes Unix (#8232)
  • Réduire les allocations dans Get-Content le cmdlet (#8103) (Merci @iSazonov!)
  • Permettre Add-Content de partager l’accès à la lecture avec d’autres outils lors de la rédaction de contenu (#8091)
  • Get/Add-Content affiche une erreur améliorée lors du ciblage d’un conteneur (#7823) (Merci @kvprasoon!)
  • Ajouter -Nameles paramètres , -NoUserOverrides et -ListAvailable à Get-Culture cmdlet (#7702) (Merci @iSazonov!)
  • Ajouter un attribut unifié pour compléter le paramètre d’encodage . (#7732) (Merci @ThreeFive-O!)
  • Autoriser les identifiants numériques et le nom des pages de codes enregistrées dans les paramètres d’encodage (#7636) (Merci @iSazonov!)
  • Correction Rename-Item -Path avec personnage joker (#7398) (Merci @kwkam!)
  • Lorsque l’utilisation Start-Transcript d’un fichier existe, le fichier est vide plutôt que supprimé (#8131) (Merci @paalbra!)
  • Créez Add-Type des fichiers open source avec FileAccess.Read et FileShare.Read explicitement (#7915) (Merci @IISResetMe!)
  • Correctif Enter-PSSession -ContainerId pour la dernière version de Windows (#7883)
  • Assurez-vous que la propriété NestedModules soit peuplée par Test-ModuleManifest (#7859)
  • Ajouter %F un boîtier à Get-Date -UFormat (#7630) (Merci @britishben!)
  • Correction Set-Service -Status Stopped pour arrêter les services avec dépendances (#5525) (Merci @zhenggu!)