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 aux Sort-Object tests associés (#7862) (merci) @KirkMunro!)
  • Améliorer l’applet Start-Sleep de commande pour accepter les fractions de secondes (#8537) (Merci @Prototyyppi!)
  • Modification de la table de hachage pour rendre OrdinalIgnoreCase case-insensitive dans toutes les cultures (#8566)
  • Correction de LittéralPath dans Import-Csv la liaison à 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 de débogage définit $DebugPreference désormais la valeur 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)
  • N’ajoutez PATHEXT pas 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 public (#8054) (Merci @KirkMunro!)
  • Ajouter une inférence de type pour $_ / $PSItem les catch{ } blocs (#8020) (Merci @vexx32!)
  • Correction de l’inférence de type d’appel de méthode statique (#8018) (Merci @SeeminglyScience!)
  • Créer des types déduits pour Select-Object, PSObjectGroup-Objectet 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 de type de style C# et des suffixes pour ushort, uint, ulong et des littéraux courts (#7813) (merci) @vexx32!)
  • Ajout de nouveaux suffixes pour les littéraux numériques - voir about_Numeric_Literals (#7901) (Merci) @vexx32!)
  • Niveau d’impact de rapport correct lorsque SupportsShouldProcess n’est pas défini sur « true » (#8209) (Merci @vexx32!)
  • Résoudre les problèmes liés à l’ensemble de caractères de requête dans les applets de commande web (#8742) (merci) @markekraus!)
  • Résoudre le problème attendu 100-continue avec les applets de commande web (#8679) (merci) @markekraus!)
  • Résoudre le problème de blocage de fichier avec les applets de commande web (#7676) (Merci @Claustn!)
  • Résoudre le problème d’analyse de la page de code dans Invoke-RestMethod (#8694) (Merci @markekraus!)
  • Refactorisation de ConvertTo-Json pour exposer JsonObject.ConvertToJson comme une API publique (#8682)
  • Ajouter une profondeur maximale configurable avec ConvertFrom-Json -Depth (#8199) (Merci @louistio!)
  • Ajouter un 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 #)
  • Résoudre Get-Help le 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 le Get-Help paramètre -Parameter afin qu’il accepte les tableaux de chaînes (#8454) (Merci) @sethvs!)
  • Résoudre LE 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 des types d’énumération et de caractères de support dans l’applet Format-Hex de commande (#8191) (Merci @iSazonov!)
  • Suppression de ShouldProcess de Format-Hex (#8178)
  • Ajouter de nouveaux paramètres Offset et Count à Format-Hex l’applet de commande (#7877) (Merci) @iSazonov!)
  • Autoriser « name » comme clé d’alias pour « label » dans ConvertTo-Html, autorisez l’entrée « width » à être un entier (#8426) (Merci) @mklement0!)
  • Rendre 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 la création de texte à partir d’une entrée de pipeline (#7660) (Merci @powercode!)
  • Correction de Join-String 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 LittéralPath dans Import-Csv la liaison à la Get-ChildItem sortie (#8277) (Merci @iSazonov!)
  • la fonction help ne devrait pas utiliser la radiomessagerie pour AliasHelpInfo (#8552)
  • Ajouter -UseMinimalHeader pour réduire l’en-tête Start-Transcript 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 une prise en charge pour 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 (#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 l’applet Get-Content 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 -Name, -NoUserOverrides et -ListAvailable paramètres à 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 les 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 du fichier existe, le fichier vide plutôt que la suppression (#8131) (Merci @paalbra!)
  • Créer 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 Windows (#7883)
  • Vérification que la propriété NestedModules est remplie par Test-ModuleManifest (#7859)
  • Ajouter %F un cas à Get-Date -UFormat (#7630) (Merci @britishben!)
  • Corriger Set-Service -Status Stopped pour arrêter les services avec des dépendances (#5525) (Merci @zhenggu!)