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 [psobject] InputObject
-Encoding      Encoding     ParameterName [Encoding] Encoding
-Count         Count        ParameterName [long] Count
-Offset        Offset       ParameterName [long] Offset

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
Accept pipeline input:False
Accept wildcard characters: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
Accept pipeline input:False
Accept wildcard characters: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
Accept pipeline input:False
Accept wildcard characters: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
Accept pipeline input:False
Accept wildcard characters: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
Accept pipeline input:False
Accept wildcard characters: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
Accept pipeline input:False
Accept wildcard characters:False

Indata

None

Utdata

CommandCompletion