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
dansWrite-Output
pour le rendre cohérent avec Windows PowerShell. (#9069) - Rendre
Join-String -InputObject 1,2,3
le résultat égal au1,2,3 | Join-String
résultat (#8611) (Merci @sethvs!) - Ajouter
-Stable
auxSort-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 à laGet-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
lescatch{ }
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-Object
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 surlocalhost
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 etEnter-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 à laGet-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êteStart-Transcript
de transcription (#8402) (Merci @lukexjeremy!) - Ajouter les applets de commande
Enable-ExperimentalFeature
etDisable-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
lanon-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
etEnter-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’appletGet-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!)