TabExpansion2
Eine Hilfsfunktion, die die CompleteInput()
Methode der CommandCompletion-Klasse umschließt, um den Tab-Abschluss für PowerShell-Skripts bereitzustellen.
Syntax
TabExpansion2
[-inputScript] <String>
[[-cursorColumn] <Int32>]
[[-options] <Hashtable>]
[<CommonParameters>]
TabExpansion2
[-ast] <Ast>
[-tokens] <Token[]>
[-positionOfCursor] <IScriptPosition>
[[-options] <Hashtable>]
[<CommonParameters>]
Beschreibung
TabExpansion2
ist eine integrierte Funktion, die die Tabulatorvervollständigung für Benutzereingaben bereitstellt. PowerShell ruft diese Funktion auf, wenn der Benutzer beim Eingeben eines Befehls die TAB- oder STRG-LEERTASTE+ drückt. Die Funktion gibt eine Liste möglicher Fertigstellungen für die aktuelle Eingabe zurück.
TabExpansion2
wird normalerweise nicht direkt von Benutzern aufgerufen. Es kann jedoch hilfreich sein, um den Abschluss der Registerkarte zu testen. Zur Verwendung TabExpansion2
müssen Sie das aktuelle Eingabeskript und die Cursorposition im Skript angeben. Die Funktion gibt ein CommandCompletion -Objekt zurück, das eine Liste der möglichen Fertigstellungen für die aktuelle Eingabe enthält. Dieses Eingabeskript kann eine Zeichenfolge oder eine abstrakte Syntaxstruktur (AST) sein, die das Skript darstellt.
Sie können das Standardverhalten TabExpansion2
außer Kraft setzen, indem Sie eine benutzerdefinierte Funktion mit demselben Namen in Ihrer PowerShell-Sitzung definieren. Diese benutzerdefinierte Funktion kann Vervollständigungen für benutzerdefinierte Befehle oder Parameter bereitstellen. Obwohl es möglich ist, außer Kraft zu setzen TabExpansion2
, wird sie nicht unterstützt. Sie sollten nur dann eine benutzerdefinierte Funktion erstellen, wenn Sie das Verhalten der Registerkartenabschluss anpassen müssen.
Beispiele
Beispiel 1 : Abrufen der Registerkartenvervollständigung für befehlsparameter
Dieses Beispiel zeigt die gleichen Ergebnisse, die Sie erhalten würden, indem Sie an der PowerShell-Eingabeaufforderung eingeben Format-Hex -<Tab>
. Die TabExpansion2
Funktion gibt ein CommandCompletion -Objekt zurück, das eine Liste der möglichen Fertigstellungen für das -
Token enthält.
TabExpansion2 -inputScript ($s = 'Format-Hex -') -cursorColumn $s.Length |
Select-Object -ExpandProperty CompletionMatches
CompletionText ListItemText ResultType ToolTip
-------------- ------------ ---------- -------
-Path Path ParameterName [string[]] Path
-LiteralPath LiteralPath ParameterName [string[]] LiteralPath
-InputObject InputObject ParameterName [Object] InputObject
-Encoding Encoding ParameterName [string] Encoding
-Raw Raw ParameterName [switch] Raw
-Verbose Verbose ParameterName [switch] Verbose
-Debug Debug ParameterName [switch] Debug
-ErrorAction ErrorAction ParameterName [ActionPreference] ErrorAction
-WarningAction WarningAction ParameterName [ActionPreference] WarningAction
-InformationAction InformationAction ParameterName [ActionPreference] InformationAction
-ErrorVariable ErrorVariable ParameterName [string] ErrorVariable
-WarningVariable WarningVariable ParameterName [string] WarningVariable
-InformationVariable InformationVariable ParameterName [string] InformationVariable
-OutVariable OutVariable ParameterName [string] OutVariable
-OutBuffer OutBuffer ParameterName [int] OutBuffer
-PipelineVariable PipelineVariable ParameterName [string] PipelineVariable
Beispiel 2 : Abrufen der Registerkartenvervollständigung für Parameterwerte
In diesem Beispiel wird gezeigt, wie Sie den Abschluss der Registerkarte für Parameterwerte abrufen. In diesem Beispiel wird erwartet, dass der Parameter "Stage" drei mögliche Werte aufweist und dass einer der Werte lautet Three
. Sie können diese Technik verwenden, um den Abschluss der Registerkarte für Ihre Funktion zu testen, um die erwarteten Ergebnisse zurückgibt.
function GetData {
param (
[ValidateSet('One', 'Two', 'Three')]
[string]$Stage
)
Write-Verbose "Retrieving data for stage $Stage"
}
$result = TabExpansion2 -inputScript ($line = 'GetData -Stage ') -cursorColumn $line.Length |
Select-Object -ExpandProperty CompletionMatches
$result.Count -eq 3
$result.CompletionText -contains 'Three'
True
True
Parameter
-ast
Ein abstraktes Syntaxbaumobjekt (AST), das das Skript darstellt, das Sie mithilfe des Tabstoppabschlusses erweitern möchten.
Typ: | Ast |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-cursorColumn
Die Spaltennummer des Cursors in der Eingabeskriptzeichenfolge. Die Cursorposition wird verwendet, um das Token zu bestimmen, das nach Abschluss der Registerkarte erweitert wird.
Typ: | Int32 |
Position: | 1 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-inputScript
Eine Zeichenfolge, die das Skript darstellt, das Sie mithilfe des Tabstoppabschlusses erweitern möchten.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-options
Eine Hashtabelle mit Optionswerten, die an die CompleteInput()
API übergeben werden sollen. Die API akzeptiert die folgenden booleschen Optionen:
IgnoreHiddenShares
- Bei Festlegung auf$true
, ignorieren Sie ausgeblendete UNC-Freigaben wie\\COMPUTER\ADMIN$
z. B. und\\COMPUTER\C$
. Standardmäßig enthält PowerShell ausgeblendete Freigaben.RelativePaths
– Standardmäßig entscheidet PowerShell, wie Pfade basierend auf der von Ihnen bereitgestellten Eingabe erweitert werden sollen. Durch Festlegen dieses Werts wird erzwungen,$true
dass PowerShell Pfade durch relative Pfade ersetzt. Wenn Sie diesen Wert auf$false
", erzwingt PowerShell, sie durch absolute Pfade zu ersetzen.LiteralPaths
- Standardmäßig ersetzen PowerShell Sonderdateizeichen, z. B. eckige Klammern und Back-Ticks, durch ihre escaped-Entsprechungen. Durch Festlegen dieses Werts wird$true
die Ersetzung verhindert.
Typ: | Hashtable |
Position: | 3 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-positionOfCursor
Die Spaltennummer des Cursors im Eingabe-AST. Die Cursorposition wird verwendet, um das Token zu bestimmen, das nach Abschluss der Registerkarte erweitert wird.
Typ: | IScriptPosition |
Position: | 2 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-tokens
Ein Array von Token, die aus dem Eingabeskript analysiert werden. Die Token werden verwendet, um das Token zu bestimmen, das nach Abschluss der Registerkarte erweitert wird.
Typ: | Token[] |
Position: | 1 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
None