Partager via


Utilisation de la complétion automatique par tabulation dans l’interpréteur de commandes

PowerShell fournit des complétions sur les entrées pour fournir des indicateurs, activer la découverte et accélérer la saisir des entrées. Les noms de commandes, les noms de paramètres, les valeurs d’argument et les chemins d’accès aux fichiers peuvent tous être terminés en appuyant sur la touche Tab.

La touche Tab est le raccourci clavier par défaut sur Windows. PSReadLine fournit également une MenuComplete fonction liée à Ctrl+Espace. La MenuComplete fonction affiche une liste d’achèvements correspondants sous la ligne de commande.

Ces touches peuvent être modifiées à l’aide d’applets de commande PSReadLine ou dans l'application qui héberge PowerShell. Les keybindings peuvent être différents sur les plateformes autres que Windows. Pour plus d’informations, consultez about_PSReadLine_Functions.

Fonctionnalités de complétion par tabulation intégrées

PowerShell a activé la complétion automatique par onglets pour de nombreux aspects de l’expérience de ligne de commande.

Saisie semi-automatique du nom de fichier

Pour renseigner automatiquement un nom de fichier ou un chemin d’accès à partir des choix disponibles, tapez une partie du nom et appuyez sur la touche Tab. PowerShell étend automatiquement le nom à la première correspondance qu’il trouve. Appuyer à nouveau sur la touche Tab pour faire défiler tous les choix disponibles à chaque pression sur la touche.

Complétion du nom de commande et de paramètre

Le développement par tabulation des noms d’applet de commande est légèrement différent. Pour développer par tabulation un nom d’applet de commande, tapez la première partie entière du nom (verbe) et le trait d’union qui suit. Vous pouvez entrer davantage de caractères du nom pour une correspondance partielle. Par exemple, si vous tapez get-co , puis appuyez sur la touche Tabulation, PowerShell développe automatiquement cela en le Get-Command cmdlet (notez qu’il modifie également la casse des lettres pour les mettre sous leur forme standard). Si vous appuyez à nouveau sur Tab touche, PowerShell remplace cela par le seul autre nom d’applet de commande correspondant, Get-Content. La saisie semi-automatique de tabulation fonctionne également pour résoudre les alias PowerShell et les exécutables natifs.

Le graphique suivant montre des exemples de complétion d'onglets et de menus.

Exemples de complétion par tabulation et menu

Autres améliorations du système de complétion d'onglets

Chaque nouvelle version de PowerShell inclut des améliorations apportées à la saisie semi-automatique des onglets qui corrigent les bogues et améliorent la facilité d’utilisation.

PowerShell 7.0

  • La complétion par tabulation résout les affectations de variables qui sont des énumérations ou qui sont restreintes par type.
  • La complétion automatique par tabulation étend les applets de commande et les fonctions abrégées. Par exemple, i-psdf<tab> retourne Import-PowerShellDataFile

PowerShell 7.2

  • Corriger la saisie semi-automatique pour les rubriques non localisées about*
  • Correction de l’platissement traité comme paramètre positionnel dans les achèvements
  • Ajouter des complétions automatiques pour les mots clés d’aide basés sur les commentaires
  • Ajouter la saisie semi-automatique pour les instructions #Requires
  • Ajouter la saisie semi-automatique par tabulation pour le paramètre View des cmdlets Format-*
  • Ajouter la prise en charge des compléteurs d'arguments à base de classes

PowerShell 7.3

  • Correction de l'achèvement automatique dans le bloc de script spécifié pour le ValidateScriptAttribute
  • Ajout de la complétion automatique par tabulation pour les étiquettes de boucle après break et continue
  • Améliorer la complétion de la table de hachage dans plusieurs scénarios
    • Platissement des paramètres
    • Paramètre Arguments pour Invoke-CimMethod
    • Paramètre FilterHashtable pour Get-WinEvent
    • Paramètre de propriété pour les applets de commande CIM
    • Supprime les doublons des scénarios de terminaison de membre
  • Prise en charge des barres obliques dans la saisie semi-automatique du partage réseau (chemin UNC)
  • Améliorer la saisie semi-automatique des membres
  • Prioriser les complétions plutôt que les énumérations pour les paramètres
  • Ajouter la prise en charge de l’inférence de type pour les méthodes génériques avec des paramètres de type
  • Améliorer l’inférence de type et les achèvements
    • Permet d’afficher les méthodes dans les résultats d'achèvement pour ForEach-Object -MemberName
    • Empêche l’achèvement sur les expressions qui retournent void comme ([void](""))
    • Permet aux constructeurs de classe autres que ceux par défaut de s’afficher lorsque la complétion de classe est basée sur l’AST

Autres façons d’améliorer la complétion automatique des paramètres de commande

L’expansion de l’onglet intégrée est contrôlée par la fonction interne TabExpansion ou TabExpansion2. Il est possible de créer des fonctions ou des modules qui remplacent le comportement par défaut de ces fonctions. Vous trouverez des exemples dans PowerShell Gallery en recherchant le mot clé TabExpansion .

Utilisation des attributs ValidateSet ou ArgumentCompletions avec des paramètres

L’attribut ArgumentCompletions vous permet d’ajouter des valeurs d’achèvement de tabulation à un paramètre spécifique. L’attribut ArgumentCompletions est similaire à ValidateSet. Les deux attributs acceptent une liste de valeurs à présenter lorsque l’utilisateur appuie sur Tab après le nom du paramètre. Toutefois, contrairement à ValidateSet, les valeurs ne sont pas validées.

Pour plus d’informations, consultez :

Utilisation de l'attribut ArgumentCompleter ou Register-ArgumentCompleter avec des paramètres

Un argument completer est un bloc de script ou une fonction qui fournit une complétion automatique dynamique pour les valeurs des paramètres.

L’attribut ArgumentCompleter vous permet d’inscrire une fonction qui fournit des valeurs d’achèvement de tabulation pour le paramètre. La fonction completer d’argument doit être disponible pour la fonction contenant le paramètre avec l’attribut ArgumentCompleter . En règle générale, la fonction est définie dans le même script ou module.

Pour plus d’informations, consultez ArgumentCompleter.

L’applet Register-ArgumentCompleter de commande inscrit un bloc de script en tant que fonction de complément d’argument au moment de l’exécution pour toute commande que vous spécifiez. Cela vous permet de définir des compléteurs d'arguments en dehors du script ou du module, ou pour les commandes natives. Pour plus d’informations, consultez Register-ArgumentCompleter.

IntelliSense prédictif dans PSReadLine

PSReadLine 2.1.0 a introduit la fonctionnalité IntelliSense prédictive . IntelliSense prédictif fournit des suggestions pour des commandes complètes en fonction des éléments de l'historique de PSReadLine.

PSReadLine 2.2.2 étend la puissance d’IntelliSense prédictive en ajoutant la prise en charge des modules plug-in qui utilisent une logique avancée pour fournir des suggestions pour les commandes complètes. Le module Az.Tools.Predictor était le premier plug-in pour IntelliSense prédictif. Il utilise Machine Learning pour prédire la commande Azure PowerShell que vous souhaitez exécuter et les paramètres que vous souhaitez utiliser.

Pour plus d’informations, consultez Utilisation des prédicteurs.