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。