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
à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 à 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 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 incatch{ }
(#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 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 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 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 #) - 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
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 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
etEnter-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
-Name
les paramètres et-NoUserOverrides
-ListAvailable
à 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 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!)