TabExpansion2

一个帮助程序函数,用于CompleteInput()包装 CommandCompletion 类的方法,以提供 PowerShell 脚本的选项卡完成。

语法

TabExpansion2
   [-inputScript] <String>
   [[-cursorColumn] <Int32>]
   [[-options] <Hashtable>]
   [<CommonParameters>]
TabExpansion2
   [-ast] <Ast>
   [-tokens] <Token[]>
   [-positionOfCursor] <IScriptPosition>
   [[-options] <Hashtable>]
   [<CommonParameters>]

说明

TabExpansion2 是一个内置函数,提供用户输入的选项卡完成。 当用户在键入命令时按 TabCtrl+空格键时,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

输出

CommandCompletion