TabExpansion2
一个帮助程序函数,用于CompleteInput()
包装 CommandCompletion 类的方法,以提供 PowerShell 脚本的选项卡完成。
语法
TabExpansion2
[-inputScript] <String>
[[-cursorColumn] <Int32>]
[[-options] <Hashtable>]
[<CommonParameters>]
TabExpansion2
[-ast] <Ast>
[-tokens] <Token[]>
[-positionOfCursor] <IScriptPosition>
[[-options] <Hashtable>]
[<CommonParameters>]
说明
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
输入脚本字符串中游标的列号。 光标位置用于确定通过 Tab 完成扩展的标记。
类型: | 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 中游标的列号。 光标位置用于确定通过 Tab 完成扩展的标记。
类型: | IScriptPosition |
Position: | 2 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
-tokens
从输入脚本分析的令牌数组。 令牌用于确定通过 Tab 完成扩展的令牌。
类型: | Token[] |
Position: | 1 |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | False |
输入
None