TabExpansion2

一個輔助函式,將 CommandCompletion 類別的方法包裝CompleteInput()起來,為 PowerShell 腳本提供分頁補全功能。

語法

ScriptInputSet (預設值)

TabExpansion2
    [-inputScript] <String>
    [[-cursorColumn] <Int32>]
    [[-options] <Hashtable>]
    [<CommonParameters>]

AstInputSet

TabExpansion2
    [-ast] <Ast>
    [-tokens] <Token[]>
    [-positionOfCursor] <IScriptPosition>
    [[-options] <Hashtable>]
    [<CommonParameters>]

Description

TabExpansion2 是一個內建的功能,提供分頁補全功能供使用者輸入。 當使用者在輸入指令時按下 Tab 鍵或 Ctrl+空格 鍵,PowerShell 會呼叫此函式。 該函數會回傳當前輸入的可能補全列表。

TabExpansion2 通常不會由使用者直接呼叫。 不過,它在測試分頁完成時很有用。 要使用 TabExpansion2,你需要提供目前輸入腳本和腳本中的游標位置。 函式會回傳一個 CommandCompletion 物件,其中包含目前輸入可能的補全清單。 這個輸入腳本可以是字串,也可以是代表腳本的抽象語法樹(AST)。

你可以在 PowerShell 工作階段中自訂一個同名的函式來覆寫預設 TabExpansion2 行為。 此自訂函式可提供自訂指令或參數的補全。 雖然可以覆寫 TabExpansion2,但不支援。 只有當你有特定需求需要自訂分頁完成行為時,才應該建立自訂函式。

範例

範例 1 - 取得指令參數的 tab 完成

這個範例顯示了你在 PowerShell 命令提示字元輸入 Format-Hex -<Tab> 時得到的相同結果。 該 TabExpansion2 函式會回傳一個 CommandCompletion 物件,其中包含該標記可能的完成列表 - 。

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

範例 2 - 取得參數值的制表補全

這個範例展示了如何取得參數值的制表補全。 在此範例中,我們預期 Stage 參數有三個可能值,其中一個值為 Three。 你可以用這個技巧來測試你的函式的制表補全是否回傳預期結果。

function Get-Data {
    param (
        [ValidateSet('One', 'Two', 'Three')]
        [string]$Stage
    )
    Write-Verbose "Retrieving data for stage $Stage"
}

$result = TabExpansion2 -inputScript ($line = 'Get-Data -Stage ') -cursorColumn $line.Length |
    Select-Object -ExpandProperty CompletionMatches
$result.Count -eq 3
$result.CompletionText -contains 'Three'
True
True

參數

-ast

一個抽象語法樹(AST)物件,代表你想用分頁補全來展開的腳本。

參數屬性

類型:Ast
預設值:None
支援萬用字元:False
不要顯示:False

參數集

AstInputSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-cursorColumn

輸入腳本字串中游標的欄號。 游標位置用來決定透過分頁完成擴展的標記。

參數屬性

類型:Int32
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ScriptInputSet
Position:1
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-inputScript

一個字串代表你想用制表完成來展開的腳本。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

ScriptInputSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-options

一個用來傳遞給 CompleteInput() API 的選項值雜湊表。 API 接受以下布林值選項:

  • IgnoreHiddenShares - 當設定為 $true時,忽略隱藏的 UNC 份額,如 \\COMPUTER\ADMIN$ 和 \\COMPUTER\C$。 PowerShell 預設包含隱藏共享。
  • RelativePaths - 預設情況下,PowerShell 會根據你提供的輸入決定如何展開路徑。 將此值設為 $true 會迫使 PowerShell 將路徑替換為相對路徑。 將此值設為 $false,會迫使 PowerShell 以絕對路徑取代它們。
  • LiteralPaths - 預設情況下,PowerShell 會用其跳脫的對應字元取代特殊檔案字元,如方括號和反勾符號。 將此值設為 $true 則可防止替換。

參數屬性

類型:Hashtable
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:3
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-positionOfCursor

輸入AST中游標的欄號。 游標位置用來決定透過分頁完成擴展的標記。

參數屬性

類型:IScriptPosition
預設值:None
支援萬用字元:False
不要顯示:False

參數集

AstInputSet
Position:2
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-tokens

一個從輸入腳本解析出來的標記陣列。 這些標記用來決定透過 tab 完成來擴展的標記。

參數屬性

類型:

Token[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

AstInputSet
Position:1
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。

輸入

None

輸出

CommandCompletion