Verwenden von Vorhersagediensten in PSReadLine

In PSReadLine 2.1.0 haben wir die Predictive IntelliSense-Funktion eingeführt. Predictive IntelliSense liefert Vorschläge zur Vervollständigung von Befehlen basierend auf Elementen aus Ihrem PSReadLine-Verlauf. In PSReadLine 2.2.2 wird Predictive IntelliSense noch leistungsfähiger. Nun werden zur Erstellung der Befehlsvorschläge Plug-In-Module unterstützt, die erweiterte Logik verwenden. In der neuesten Version, PSReadLine 2.2.6, sind Vorhersagen standardmäßig aktiviert.

Predictive IntelliSense verwenden

Wenn Predictive IntelliSense aktiviert ist, wird der Vorhersagevorschlag ab der Cursorposition als farbiger Text eingeblendet. Die Vorschläge von Predictive IntelliSense helfen neuen und erfahrenen PowerShell-Nutzern, vollständige Befehle basierend auf übereinstimmenden Vorhersagen zu finden, zu bearbeiten und auszuführen. Die Vorschläge werden aus dem Benutzerverlauf und zusätzlichen, domänenspezifischen Plugins gewonnen.

Inlineansicht einer Vorhersage

Die obigen Bilder zeigen die Standard-Inlineansicht (InlineView) eines Vorschlags. Inlinevorschläge akzeptieren Sie, indem Sie die NACH-RECHTS-TASTE drücken. Nachdem Sie den Vorschlag angenommen haben, können Sie die Befehlszeile bearbeiten, bevor Sie die EINGABETASTE drücken, um den Befehl auszuführen.

PSReadLine bietet ebenfalls die Möglichkeit, die Vorschläge im ListView anzuzeigen.

Listenansicht der Vorschläge

In der Listenansicht können Sie mit den Pfeiltasten durch die verfügbaren Vorschläge scrollen. Die Listenansicht zeigt außerdem die Quelle der Vorhersage an.

PSReadLine nutzt standardmäßig InlineView. Sie können zwischen InlineView und ListView wechseln, indem Sie die Taste F2 drücken. Sie können auch den PredictionViewStyle-Parameter Set-PSReadLineOption verwenden, um die Ansicht zu ändern.

Predictive IntelliSense nutzen

Um Predictive IntelliSense zu verwenden, müssen Sie eine neuere Version von PSReadLine installiert haben. Die besten Ergebnisse erhalten Sie mit der aktuellsten Version des Moduls.

So installieren Sie PSReadLine mithilfe von PowerShellGet:

Install-Module -Name PSReadLine

Alternativ dazu können Sie das neue PowerShellGet v3-Modul installieren:

Install-PSResource -Name PSReadLine

PSReadLine kann in Windows PowerShell 5.1 oder in PowerShell 7 oder höher installiert werden. Um Vorhersage-Plug-Ins zu verwenden, müssen Sie PowerShell 7.2 oder höher verwenden. In Windows PowerShell 5.1 ist die verlaufsbasierte Vorhersage verfügbar.

In PSReadLine 2.2.6 ist Predictive IntelliSense standardmäßig unter den folgenden Bedingungen aktiviert:

  • Wenn virtual Terminal (VT) unterstützt wird und PSReadLine in PowerShell 7.2 oder höher ausgeführt wird, wird PredictionSource auf HistoryAndPlugin gestellt.
  • Wenn virtual Terminal (VT) unterstützt wird und PSReadLine in PowerShell 7.2 oder höher ausgeführt wird, wird PredictionSource auf History gestellt.
  • Wenn VT nicht unterstützt wird, wird PredictionSource auf None gestellt.

Verwenden Sie den folgenden Befehl, um die aktuelle Einstellung zu sehen:

Get-PSReadLineOption | Select-Object -Property PredictionSource

Sie können die Vorhersagequelle mithilfe des Cmdlets Set-PSReadLineOption und dem Parameter PredictionSource ändern. Um die Vorhersagequelle festzulegen, haben Sie folgende Optionen:

  • None
  • History
  • Plugin
  • HistoryAndPlugin

Hinweis

Verlaufsbasierte Vorhersagen („History“) stammen aus dem von PSReadLine verwalteten Benutzerverlauf. Dieser Verlauf ist umfassender als der sitzungsbasierte Verlauf, den Sie über Get-History anzeigen können. Weitere Informationen finden Sie im Abschnitt „Befehlsverlauf“ unter about_PSReadLine.

Festlegen der Vorhersagefarbe

Standardmäßig werden Vorhersagen als hellgrauer Text in derselben Zeile angezeigt, die der Benutzer gerade bearbeitet. Um die Barrierefreiheit zu fördern, können Sie die Vorhersagefarbe anpassen. Die Farben werden mithilfe von ANSI-Escapesequenzen definiert. Zum Verfassen von ANSI-Escapesequenzen können Sie $PSStyle verwenden.

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

Sie können selbstverständlich auch Ihre eigenen Escapesequenzen erstellen. Der standardmäßig hellgraue Vorhersagetext kann mithilfe der folgenden ANSI-Escapesequenz wiederhergestellt werden.

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

Weitere Informationen zum Festlegen der Vorhersagefarbe und anderer PSReadLine-Einstellungen finden Sie unter Set-PSReadLineOption.

Tastenzuordnung ändern

PSReadLine enthält Funktionen zum Navigieren und Akzeptieren von Vorhersagen. Zum Beispiel:

  • AcceptSuggestion – akzeptiert den aktuellen Inlinevorschlag
  • AcceptNextSuggestionWord – akzeptiert das nächste Wort im Inlinevorschlag
  • AcceptSuggestion wird in ForwardChar erstellt und ist standardmäßig mit der NACH-RECHTS-TASTE verknüpft.
  • AcceptNextSuggestionWord ist mit der Funktion ForwardWord integriert, die an STRG+F gebunden sein kann.

Mit dem Cmdlet Set-PSReadLineKeyHandler können Sie die Tastenzuordnung ändern.

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

Wenn Sie bei dieser Zuordnung STRG+F drücken, wird das nächste Wort in einem Inlinevorschlag akzeptiert, wenn der Cursor am Ende der aktuellen Bearbeitungszeile steht. Auch AcceptSuggestion und AcceptNextSuggestionWord können Sie für eine ähnliche Funktionsweise an bestimmte Tastenanschläge binden, falls Sie beispielsweise über die NACH-RECHTS-TASTE nur das nächste Wort des Inlinevorschlags anstelle der gesamten Vorschlagszeile akzeptieren möchten.

Set-PSReadLineKeyHandler -Chord "RightArrow" -Function ForwardWord

Verwenden anderer Vorhersage-Plug-Ins

Das Az.Tools.Predictor-Modul war das erste Plug-In für Predictive IntelliSense. Es verwendet Machine Learning, um vorherzusagen, welchen Azure PowerShell-Befehl Sie ausführen wollen, und welche Parameter Sie verwenden möchten. Weitere Informationen und Installationsanweisungen finden Sie unter Ankündigung der allgemeinen Verfügbarkeit von Az.Tools.Predictor.

Das CompletionPredictor-Modul macht alles, was in PowerShell mit der TAB-TASTE vervollständigt werden kann, IntelliSense-fähig. Wenn PSReadLine auf InlineView eingestellt ist, können Sie wie gewohnt die TAB-TASTE zur Vervollständigung nutzen. Wenn Sie zu ListView wechseln, erhalten Sie die IntelliSense-Funktionsweise. Das CompletionPredictor-Modul können Sie aus dem PowerShell-Katalog installieren.

PowerShell IntelliSense mit CompletionPredictor

Wie bereits erwähnt, zeigt Ihnen ListView, woher die Vorhersage stammt. Wenn mehrere Plug-Ins installiert sind, werden die Vorhersagen nach Quellen gruppiert. Die verlaufsbasierte Vorhersage ist zuerst aufgeführt, gefolgt von allen Plug-Ins in der Reihenfolge, in der sie geladen wurden.

Erstellen eines eigenen Prädiktormoduls

Sie können Ihre eigene Vorhersagefunktion mithilfe von C# schreiben, um ein kompiliertes PowerShell-Modul zu erstellen. Das Modul muss die Schnittstelle System.Management.Automation.Subsystem.Prediction.ICommandPredictor implementieren. Diese Schnittstelle deklariert die Methoden, die verwendet werden, um Vorhersageergebnisse abzufragen und Feedback zu geben.

Weitere Informationen finden Sie unter Erstellen einer Befehlszeilenvorhersage.