TabExpansion2
協助程式函式,包裝 CompleteInput()
CommandCompletion 類別的 方法,以提供 PowerShell 腳本的索引標籤完成。
語法
TabExpansion2
[-inputScript] <String>
[[-cursorColumn] <Int32>]
[[-options] <Hashtable>]
[<CommonParameters>]
TabExpansion2
[-ast] <Ast>
[-tokens] <Token[]>
[-positionOfCursor] <IScriptPosition>
[[-options] <Hashtable>]
[<CommonParameters>]
Description
TabExpansion2
是內建函式,可提供使用者輸入的索引標籤完成。 當使用者在輸入命令時按下 Tab 鍵或 Ctrl+空格鍵時,PowerShell 會呼叫此函式。 函式會傳回目前輸入的可能完成清單。
TabExpansion2
通常不會由使用者直接呼叫。 不過,它對於測試索引標籤完成很有用。 若要使用 TabExpansion2
,您必須提供目前輸入腳本和腳本中的數據指標位置。 函式會傳 回 CommandCompletion 物件,其中包含目前輸入的可能完成清單。 此輸入文本可以是代表腳本的字串或抽象語法樹狀結構(AST)。
您可以在 PowerShell 工作階段中定義具有相同名稱的自定義函式,以覆寫的預設行為 TabExpansion2
。 此自定義函式可以提供自定義命令或參數的完成。 雖然可以覆寫 TabExpansion2
,但不支援。 只有在您有自定義索引標籤完成行為的特定需求時,才應該建立自定義函式。
範例
範例 1 - 取得命令參數的索引標籤完成
此範例會顯示您在 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 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
參數
-ast
抽象語法樹狀結構 (AST) 物件,代表您想要使用 Tab 鍵自動完成展開的腳本。
類型: | Ast |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-cursorColumn
輸入文稿字串中數據指標的數據行編號。 數據指標位置是用來判斷索引標籤完成所展開的標記。
類型: | Int32 |
Position: | 1 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-inputScript
字串,表示您想要使用 Tab 鍵自動完成展開的腳本。
類型: | String |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-options
要傳遞至 CompleteInput()
API 之選項值的哈希表。 API 接受下列布爾值選項:
IgnoreHiddenShares
- 當設定為$true
時,忽略隱藏的 UNC 共用,例如\\COMPUTER\ADMIN$
和\\COMPUTER\C$
。 根據預設,PowerShell 包含隱藏的共用。RelativePaths
- 根據預設,PowerShell 會根據您提供的輸入來決定如何展開路徑。 將此值設定為$true
強制 PowerShell 以相對路徑取代路徑。 將此值設定為$false
,會強制 PowerShell 以絕對路徑取代它們。LiteralPaths
- 根據預設,PowerShell 會以逸出的對等專案取代特殊檔案字元,例如方括號和反向刻度。 將此值設定為$true
防止取代。
類型: | Hashtable |
Position: | 3 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-positionOfCursor
輸入 AST 中的數據指標數據行編號。 數據指標位置是用來判斷索引標籤完成所展開的標記。
類型: | IScriptPosition |
Position: | 2 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-tokens
從輸入文稿剖析的令牌陣列。 令牌可用來判斷依索引標籤完成展開的令牌。
類型: | Token[] |
Position: | 1 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
None