Dela via


TabExpansion2

En hjälpfunktion som omsluter CompleteInput() metoden för klassen CommandCompletion för att tillhandahålla flikavslut för PowerShell-skript.

Syntax

TabExpansion2
   [-inputScript] <String>
   [[-cursorColumn] <Int32>]
   [[-options] <Hashtable>]
   [<CommonParameters>]
TabExpansion2
   [-ast] <Ast>
   [-tokens] <Token[]>
   [-positionOfCursor] <IScriptPosition>
   [[-options] <Hashtable>]
   [<CommonParameters>]

Description

TabExpansion2 är en inbyggd funktion som tillhandahåller flikkomplettering för användarindata. PowerShell anropar den här funktionen när användaren trycker på tabb- eller Ctrl-tangenten +blanksteg när ett kommando skrivs. Funktionen returnerar en lista över möjliga slutföranden för de aktuella indata.

TabExpansion2 anropas normalt inte direkt av användare. Det kan dock vara användbart för att slutföra testfliken. Om du vill använda TabExpansion2måste du ange det aktuella indataskriptet och markörens position i skriptet. Funktionen returnerar ett CommandCompletion-objekt som innehåller en lista över möjliga slutföranden för de aktuella indata. Det här indataskriptet kan vara en sträng eller ett abstrakt syntaxträd (AST) som representerar skriptet.

Du kan åsidosätta standardbeteendet TabExpansion2 för genom att definiera en anpassad funktion med samma namn i PowerShell-sessionen. Den här anpassade funktionen kan tillhandahålla kompletteringar för anpassade kommandon eller parametrar. Även om det är möjligt att åsidosätta TabExpansion2stöds det inte. Du bör bara skapa en anpassad funktion om du har ett specifikt behov av att anpassa flikens slutförandebeteende.

Exempel

Exempel 1 – Få fliken klar för kommandoparametern

Det här exemplet visar samma resultat som du skulle få genom att ange Format-Hex -<Tab> i PowerShell-kommandotolken. Funktionen TabExpansion2 returnerar ett CommandCompletion-objekt som innehåller en lista över möjliga slutföranden - för token.

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

Exempel 2 – Få fliken slutförd för parametervärden

Det här exemplet visar hur du får tabbavslut för parametervärden. I det här exemplet förväntar vi oss att stage-parametern har tre möjliga värden och att ett av värdena är Three. Du kan använda den här tekniken för att testa att tabbavslutningen för funktionen returnerar det förväntade resultatet.

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

Parametrar

-ast

Ett ast-objekt (abstrakt syntaxträd) som representerar skriptet som du vill expandera med hjälp av tabbslut.

Typ:Ast
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-cursorColumn

Kolumnnumret för markören i indataskriptsträngen. Markörens position används för att fastställa den token som expanderas av flikens slutförande.

Typ:Int32
Position:1
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-inputScript

En sträng som representerar skriptet som du vill expandera med hjälp av tabbavslut.

Typ:String
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-options

En hashtabell med alternativvärden som ska skickas till API:et CompleteInput() . API:et accepterar följande booleska alternativ:

  • IgnoreHiddenShares – När värdet är inställt på $trueignorerar du dolda UNC-resurser som \\COMPUTER\ADMIN$ och \\COMPUTER\C$. Som standard innehåller PowerShell dolda resurser.
  • RelativePaths – Som standard bestämmer PowerShell hur sökvägar ska expanderas baserat på de indata som du angav. Om du ställer in det här värdet för att $true tvinga PowerShell att ersätta sökvägar med relativa sökvägar. Om du anger det här värdet till $falsetvingar du PowerShell att ersätta dem med absoluta sökvägar.
  • LiteralPaths – Som standard ersätter PowerShell specialfiltecken, till exempel hakparenteser och back-ticks, med deras undantagna motsvarigheter. Om du ställer in det här värdet så $true förhindras ersättningen.
Typ:Hashtable
Position:3
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-positionOfCursor

Kolumnnumret för markören i indata-AST. Markörens position används för att fastställa den token som expanderas av flikens slutförande.

Typ:IScriptPosition
Position:2
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-tokens

En matris med token som parsas från indataskriptet. Token används för att fastställa den token som expanderas av flikens slutförande.

Typ:Token[]
Position:1
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:False

Indata

None

Utdata

CommandCompletion