Поделиться через


TabExpansion2

Вспомогающая функция, которая упаковывает CompleteInput() метод класса CommandCompletion для предоставления завершения вкладок для сценариев PowerShell.

Синтаксис

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

Описание

TabExpansion2 — это встроенная функция, которая обеспечивает завершение вкладок для ввода пользователем. PowerShell вызывает эту функцию, когда пользователь нажимает клавишу TAB или CTRL+ПРОБЕЛ при вводе команды. Функция возвращает список возможных завершений для текущих входных данных.

TabExpansion2 обычно не вызывается пользователями напрямую. Однако это может быть полезно для завершения вкладки тестирования. Чтобы использовать TabExpansion2, необходимо указать текущий входной скрипт и положение курсора в скрипте. Функция возвращает объект CommandCompletion , содержащий список возможных завершения для текущих входных данных. Этот входной скрипт может быть строкой или абстрактным деревом синтаксиса (AST), представляющим скрипт.

Вы можете переопределить поведение TabExpansion2 по умолчанию, определив пользовательскую функцию с тем же именем в сеансе PowerShell. Эта пользовательская функция может предоставлять завершения для пользовательских команд или параметров. Хотя это можно переопределить TabExpansion2, оно не поддерживается. Необходимо создать пользовательскую функцию только в том случае, если необходимо настроить поведение завершения вкладки.

Примеры

Пример 1. Получение завершения вкладки для параметра команды

В этом примере показаны те же результаты, которые вы получите, введя Format-Hex -<Tab> в командной строке PowerShell. Функция 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), представляющий скрипт, который требуется развернуть с помощью завершения вкладки.

Тип:Ast
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-cursorColumn

Номер столбца курсора в строке входного скрипта. Позиция курсора используется для определения маркера, который расширяется по завершении вкладки.

Тип:Int32
Position:1
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-inputScript

Строка, представляющая скрипт, который требуется развернуть с помощью завершения вкладки.

Тип:String
Position:0
Default value: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
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-positionOfCursor

Номер столбца курсора во входном AST. Позиция курсора используется для определения маркера, который расширяется по завершении вкладки.

Тип:IScriptPosition
Position:2
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-tokens

Массив маркеров, проанализированных из входного скрипта. Маркеры используются для определения маркера, который расширяется по завершении вкладки.

Тип:Token[]
Position:1
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

None

Выходные данные

CommandCompletion