Freigeben über


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 TabExpansion2mü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

Ausgaben

CommandCompletion