Partager via


Utilisation de predictors 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. La dernière version, PSReadLine 2.2.6, active les prédictions par défaut.

Utilisation prédictive d'IntelliSense

Quand IntelliSense prédictif est activé, la suggestion de prédiction s’affiche sous forme de texte coloré suivant le curseur de l’utilisateur. Les suggestions d’IntelliSense prédictive aident les utilisateurs nouveaux et expérimentés de PowerShell à découvrir, modifier et exécuter des commandes complètes en fonction des prédictions correspondantes. Les suggestions peuvent provenir de l’historique de l’utilisateur et d’autres plug-ins spécifiques au domaine.

Vue inline d’une prédiction

Les images précédentes affichent la valeur par défaut InlineView de la suggestion. La pression de la touche RightArrow accepte une suggestion intégrée. Après avoir accepté la suggestion, vous pouvez modifier la ligne de commande avant d’appuyer sur Entrée pour exécuter la commande.

PSReadLine propose également une ListView présentation des suggestions.

Affichage liste des prédictions

Dans l’affichage liste, vous pouvez utiliser les touches de direction pour parcourir les suggestions disponibles. L’affichage liste affiche également la source de la prédiction.

PSReadLine est défini par défaut sur InlineView. Vous pouvez basculer entre InlineView et ListView en appuyant sur la touche F2 . Vous pouvez également utiliser le paramètre PredictionViewStyle de Set-PSReadLineOption pour modifier la vue.

Gestion de l'IntelliSense prédictif

Pour utiliser IntelliSense prédictif, vous devez disposer d’une version plus récente de PSReadLine installée. Pour obtenir de meilleurs résultats, installez la dernière version du module.

Pour installer PSReadLine à l’aide de PowerShellGet :

Install-Module -Name PSReadLine

Vous pouvez également l’installer à l’aide du nouveau module PowerShellGet v3 :

Install-PSResource -Name PSReadLine

PSReadLine peut être installé dans Windows PowerShell 5.1 ou dans PowerShell 7 ou version ultérieure. Pour utiliser les plug-ins predictor, vous devez utiliser PowerShell 7.2 ou une version ultérieure. Windows PowerShell 5.1 peut utiliser le prédicteur basé sur l’historique.

Dans PSReadLine 2.2.6, IntelliSense prédictif est activé par défaut en fonction des conditions suivantes :

  • Si le terminal virtuel (VT) est pris en charge et que PSReadLine s’exécute dans PowerShell 7.2 ou version ultérieure, PredictionSource est défini sur HistoryAndPlugin
  • Si VT est pris en charge et PSReadLine s’exécute sur des versions de PowerShell antérieures à 7.2, PredictionSource est défini sur History
  • Si VT n’est pas pris en charge, PredictionSource est défini sur None.

Utilisez la commande suivante pour afficher le paramètre actuel :

Get-PSReadLineOption | Select-Object -Property PredictionSource

Vous pouvez modifier la source de prédiction à l’aide de l’applet Set-PSReadLineOption de commande avec le paramètre PredictionSource . PredictionSource peut être défini sur :

  • None
  • History
  • Plugin
  • HistoryAndPlugin

Remarque

Les prédictions basées sur l’historique proviennent de l’historique conservé par PSReadLine. Cet historique est plus complet que l’historique basé sur la session que vous pouvez voir à l’aide Get-History. Pour plus d’informations, consultez la section Historique des commandes de about_PSReadLine.

Définition de la couleur de prédiction

Par défaut, les prédictions apparaissent en texte gris clair sur la même ligne que celle que l’utilisateur tape. Pour prendre en charge les besoins d’accessibilité, vous pouvez personnaliser la couleur de prédiction. Les couleurs sont définies à l’aide de séquences d’échappement ANSI. Vous pouvez utiliser $PSStyle pour composer des séquences d’échappement ANSI.

Set-PSReadLineOption -Colors @{ InlinePrediction = $PSStyle.Background.Blue }

Ou vous pouvez créer votre propre. La couleur de texte de prédiction gris clair par défaut peut être restaurée à l’aide de la séquence d’échappement ANSI suivante.

Set-PSReadLineOption -Colors @{ InlinePrediction = "`e[38;5;238m" }

Pour plus d’informations sur la définition de la couleur de prédiction et d’autres paramètres PSReadLine, consultez Set-PSReadLineOption.

Modification des liaisons de touches

PSReadLine contient des fonctions permettant de naviguer et d’accepter des prédictions. Par exemple:

  • AcceptSuggestion - Accepter la suggestion en ligne actuelle
  • AcceptNextSuggestionWord - Accepter le mot suivant de la suggestion en ligne
  • AcceptSuggestion est intégré dans ForwardChar, qui est lié à RightArrow par défaut
  • AcceptNextSuggestionWord est généré dans la fonction ForwardWord, qui peut être liée à Ctrl+f

Vous pouvez utiliser l’applet Set-PSReadLineKeyHandler de commande pour modifier les liaisons de clé.

Set-PSReadLineKeyHandler -Chord "Ctrl+f" -Function ForwardWord

Avec cette liaison, appuyez sur Ctrl+f accepte le mot suivant d’une suggestion inline lorsque le curseur se trouve à la fin de la ligne d’édition actuelle. Vous pouvez lier d’autres clés à AcceptSuggestion et AcceptNextSuggestionWord pour des fonctionnalités similaires. Par exemple, vous pouvez souhaiter que RightArrow accepte le mot suivant de la suggestion inline, au lieu de toute la ligne de suggestion.

Set-PSReadLineKeyHandler -Chord "RightArrow" -Function ForwardWord

Utilisation d'autres plug-ins prédictifs

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 et des instructions d’installation, consultez Annonce de la disponibilité générale d’Az.Tools.Predictor.

Le module CompletionPredictor ajoute une expérience IntelliSense pour tout ce qui peut être complété via la touche 'Tab' dans PowerShell. Avec PSReadLine défini sur InlineView, vous bénéficiez d'une expérience de saisie semi-automatique normale. Lorsque vous basculez vers ListView, vous bénéficiez de l’expérience IntelliSense. Vous pouvez installer le module CompletionPredictor à partir de PowerShell Gallery.

PowerShell IntelliSense à l’aide de CompletionPredictor

Comme indiqué précédemment, ListView vous indique la source de la prédiction. Si plusieurs plug-ins sont installés, les prédictions sont regroupées par source avec l’historique répertorié en premier suivi de chaque plug-in dans l’ordre où ils ont été chargés.

Création de votre propre module de prédiction

Vous pouvez écrire votre propre prédicteur à l’aide de C# pour créer un module PowerShell compilé. Le module doit implémenter l’interface System.Management.Automation.Subsystem.Prediction.ICommandPredictor . Cette interface déclare les méthodes utilisées pour interroger les résultats de prédiction et fournir des commentaires.

Pour plus d’informations, consultez Comment créer un prédicteur de ligne de commande.