TabExpansion2
一个帮助程序函数,用于包装 CompleteInput() 类的 方法,以提供 PowerShell 脚本的选项卡完成。
语法
ScriptInputSet (默认值)
TabExpansion2
[-inputScript] <String>
[[-cursorColumn] <Int32>]
[[-options] <Hashtable>]
[<CommonParameters>]
AstInputSet
TabExpansion2
[-ast] <Ast>
[-tokens] <Token[]>
[-positionOfCursor] <IScriptPosition>
[[-options] <Hashtable>]
[<CommonParameters>]
说明
TabExpansion2 是一个内置函数,提供用户输入的选项卡完成。 当用户在键入命令时按 Tab 或 Ctrl+Space 键时,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 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) 对象,该对象表示要使用 Tab 补全展开的脚本。
参数属性
| 类型: | Ast |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
AstInputSet
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-cursorColumn
输入脚本字符串中游标的列号。 光标位置用于确定通过 Tab 完成扩展的标记。
参数属性
| 类型: | Int32 |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
ScriptInputSet
| Position: | 1 |
| 必需: | False |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | False |
| 来自剩余参数的值: | False |
-inputScript
一个字符串,表示要使用 Tab 完成展开的脚本。
参数属性
| 类型: | 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 中游标的列号。 光标位置用于确定通过 Tab 完成扩展的标记。
参数属性
| 类型: | 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。