Freigeben über


Verwenden der Tab-Vervollständigung in der Shell

PowerShell bietet Vervollständigungen für Eingaben, um Hinweise bereitzustellen, Entdeckungen zu fördern und die Eingabe zu beschleunigen. Befehlsnamen, Parameternamen, Argumentwerte und Dateipfade können alle durch Drücken der Tab-Taste vervollständigt werden.

Die TAB-TASTE ist die Standardtastenzuordnung unter Windows. PSReadLine stellt auch eine MenuComplete Funktion bereit, die an STRG+LEERTASTE gebunden ist. Die MenuComplete Funktion zeigt eine Liste der übereinstimmenden Fertigstellungen unterhalb der Befehlszeile an.

Diese Keybindings können mithilfe von PSReadLine-Cmdlets oder der Anwendung geändert werden, die PowerShell hostet. Keybindings können auf Nicht-Windows-Plattformen unterschiedlich sein. Weitere Informationen finden Sie unter about_PSReadLine_Functions.

Integrierte Tab-Vervollständigungsfunktionen

PowerShell hat die Tab-Vervollständigung für viele Aspekte der Befehlszeilenerfahrung aktiviert.

Abschluss des Dateinamens

Wenn Sie einen Dateinamen oder Pfad aus den verfügbaren Optionen automatisch eingeben möchten, geben Sie einen Teil des Namens ein, und drücken Sie TAB Taste. PowerShell vervollständigt den Namen automatisch entsprechend der ersten gefundenen Übereinstimmung. Durch drücken der TAB-TASTE werden alle verfügbaren Optionen mit jeder Taste erneut durchlaufen.

Vervollständigung von Befehls- und Parameternamen

Die Tab-Erweiterung von Cmdlet-Namen unterscheidet sich geringfügig. Wenn Sie die Tab-Erweiterung für einen Cmdlet-Namen verwenden möchten, geben Sie den gesamten ersten Teil des Namens (das Verb) und den darauf folgenden Bindestrich ein. Sie können weitere Zeichen des Namens für eine Teilübereinstimmung eingeben. Wenn Sie beispielsweise get-co eingeben und dann die Tab-Taste drücken, erweitert PowerShell diese automatisch auf das Get-Command-Cmdlet (beachten Sie, dass auch die Groß-/Kleinschreibung von Buchstaben in das Standardformular geändert wird). Wenn Sie erneut TAB-taste drücken, ersetzt PowerShell dies durch den einzigen anderen übereinstimmenden Cmdlet-Namen, Get-Content. Die Tab-Vervollständigung funktioniert auch, um PowerShell-Aliase und native ausführbare Dateien aufzulösen.

Die folgende Abbildung zeigt Beispiele für die Vervollständigung von Registerkarten und Menüs.

Beispiele für Registerkarten- und Menüvervollständigung

Weitere Verbesserungen bei der Tab-Vervollständigung

Jede neue Version von PowerShell enthält Verbesserungen am Abschluss der Registerkarte, die Fehler beheben und die Benutzerfreundlichkeit verbessern.

PowerShell 7.0

  • Die Tab-Vervollständigung löst Variablenzuweisungen auf, die Enumerationen sind oder typenbeschränkt sind.
  • Die Tab-Vervollständigung erweitert abgekürzte Cmdlets und Funktionen. Beispiel: i-psdf<tab> gibt Import-PowerShellDataFile zurück

PowerShell 7.2

  • Behebung der Tab-Vervollständigung für nicht lokalisierte about* Themen
  • Behebung des Problems, dass Splatting als Positionsparameter in Vervollständigungen behandelt wird
  • Hinzufügen von Ergänzungen für kommentarbasierte Hilfeschlüsselwörter
  • Vervollständigung für #Requires Anweisungen hinzufügen
  • Hinzufügen der Tab-Vervollständigung für den Ansichtsparameter von cmdlets
  • Unterstützung für klassenbasierte Argumentvervollständiger hinzufügen

PowerShell 7.3

  • Korrigiere die Tab-Vervollständigung im angegebenen Skriptblock für den ValidateScriptAttribute
  • Tab-Vervollständigung für Schleifenetiketten nach break und continue hinzugefügt
  • Verbessern der Hashtabelle-Vervollständigung in mehreren Szenarien
    • Parameterübertragung
    • Arguments-Parameter für Invoke-CimMethod
    • FilterHashtable-Parameter für Get-WinEvent
    • Eigenschaftsparameter für die CIM-Cmdlets
    • Entfernt Duplikate aus Abschlussszenarien von Mitgliedern
  • Unterstützung von Schrägstrichen bei der Vervollständigung von Netzwerkfreigaben (UNC-Pfad)
  • Verbesserung der automatischen Vervollständigung von Mitgliedern
  • Priorisieren Sie ValidateSet-Completions vor Enumerationen für Parameter
  • Unterstützung für die Typinferenz bei generischen Methoden mit Typparametern hinzufügen
  • Verbesserung der Typinferenz und Vervollständigungen
    • Ermöglicht das Anzeigen von Methoden in Abschlussergebnissen für ForEach-Object -MemberName
    • Verhindert den Abschluss von Ausdrücken, die "void " zurückgeben, wie ([void](""))
    • Ermöglicht es, nicht standardmäßige Klassenkonstruktoren anzuzeigen, wenn der Klassenabschluss auf dem AST basiert.

Weitere Möglichkeiten zur Verbesserung der Tab-Vervollständigung von Befehlsparametern

Die integrierte Registerkartenerweiterung wird durch die interne Funktion TabExpansion oder TabExpansion2 gesteuert. Es ist möglich, Funktionen oder Module zu erstellen, die das Standardverhalten dieser Funktionen ersetzen. Sie finden Beispiele im PowerShell-Katalog, indem Sie nach dem Schlüsselwort "TabExpansion" suchen.

Verwenden der ValidateSet Attribute mit ArgumentCompletions Parametern

Mit dem ArgumentCompletions Attribut können Sie einem bestimmten Parameter Tab-Vervollständigungswerte hinzufügen. Das ArgumentCompletions Attribut ist ähnlich wie ValidateSet. Beide Attribute verwenden eine Liste der Werte, die angezeigt werden sollen, wenn der Benutzer die TAB-TASTE hinter dem Parameternamen drückt. Im Gegensatz dazu ValidateSetwerden die Werte jedoch nicht überprüft.

Weitere Informationen finden Sie unter:

Verwenden des Attributs ArgumentCompleter oder Register-ArgumentCompleter mit Parametern

Ein Argumentvervollständiger ist ein Skriptblock oder eine Funktion, das eine dynamische Tab-Vervollständigung für Parameterwerte bereitstellt.

Mit dem ArgumentCompleter Attribut können Sie eine Funktion registrieren, die Vervollständigungswerte für den Parameter bereitstellt. Die Argument completer-Funktion muss für die Funktion verfügbar sein, die den Parameter mit dem ArgumentCompleter Attribut enthält. In der Regel wird die Funktion in demselben Skript oder Modul definiert.

Weitere Informationen finden Sie unter ArgumentCompleter.

Das Register-ArgumentCompleter-Cmdlet registriert zur Laufzeit einen Skriptblock als Argumentvervollständiger-Funktion für jeden von Ihnen angegebenen Befehl. So können Sie Argumentvervollständiger außerhalb des Skripts oder Moduls oder für native Befehle definieren. Weitere Informationen finden Sie unter Register-ArgumentCompleter-.

Predictive IntelliSense in PSReadLine

PSReadLine 2.1.0 hat das Predictive IntelliSense-Feature eingeführt. Predictive IntelliSense bietet Vorschläge für vollständige Befehle basierend auf Elementen aus Ihrem PSReadLine-Verlauf .

PSReadLine 2.2.2 erweitert die Leistungsfähigkeit von Predictive IntelliSense durch Hinzufügen von Unterstützung für Plug-In-Module, die erweiterte Logik verwenden, um Vorschläge für vollständige Befehle bereitzustellen. 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 möchten, und die Parameter, die Sie verwenden möchten.

Weitere Informationen finden Sie unter Verwenden von Prädiktoren.