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


Использование заполнения нажатием клавиши TAB в оболочке

PowerShell позволяет заполнять входные данные для предоставления указаний, включения обнаружения и ускорения ввода. Имена команд, имена параметров, значения аргументов и пути к файлам можно заполнить, нажав клавишу TAB.

Клавиша TAB — это настраиваемое сочетание клавиш по умолчанию в Windows. В PSReadLine также доступна функция MenuComplete, привязанная к сочетанию CTRL+Пробел. Функция MenuComplete отображает список соответствующих завершений под командной строкой.

Эти настраиваемые сочетания клавиш можно изменить с помощью командлетов PSReadLine или приложения, в котором размещена оболочка PowerShell. На платформах, отличных от Windows, могут использоваться другие настраиваемые сочетания клавиш. Дополнительные сведения см. в статье about_PSReadLine_Functions.

Встроенные функции заполнения нажатием клавиши TAB

В PowerShell функция заполнения нажатием клавиши TAB включена для многих аспектов использования командной строки.

Завершение имени файла

Для автоматического завершения имени файла или пути из доступных вариантов введите часть имени и нажмите клавишу TAB. PowerShell автоматически расширяет имя до первого совпадения. При повторном нажатии клавиши TAB выполняется циклический проход по всем доступным вариантам.

Завершение имени команды и параметра

Расширение имен командлетов по клавише TAB происходит немного иначе. Чтобы использовать расширение по клавише TAB для имени командлета, введите всю первую часть имени (глагол) и дефис после нее. Можно указать дополнительную часть имени для поиска частичного совпадения. Например, если ввести get-co и нажать клавишу TAB, PowerShell автоматически расширит имя до командлета Get-Command (обратите внимание, что регистр букв также приводится к стандартной форме). Если нажать клавишу TAB еще раз, PowerShell заменит результат на Get-Content, единственное другое подходящее имя командлета. Заполнение нажатием клавиши TAB также работает для разрешения псевдонимов PowerShell и собственных исполняемых файлов.

На следующем рисунке показаны примеры заполнения нажатием клавиши TAB и завершения меню.

Примеры заполнения нажатием клавиши TAB и завершения меню

Другие улучшения функции заполнения нажатием клавиши TAB

Каждая новая версия PowerShell содержит улучшения функции заполнения нажатием клавиши TAB, которые устраняют ошибки и улучшают удобство использования.

PowerShell 7.0

  • Заполнение нажатием клавиши TAB разрешает назначения переменных, которые являются перечислениями или являются ограниченными типами.
  • Заполнение нажатием клавиши TAB расширяет сокращенные командлеты и функции. Например, i-psdf<tab> возвращает Import-PowerShellDataFile.

PowerShell 7.2

  • Исправлено заполнение нажатием клавиши TAB для нелокализованных разделов about*.
  • Исправлена ситуация, когда сплаттинг рассматривался как зависящий от положения параметр при заполнении.
  • Добавлены завершения для ключевых слов справки на основе комментариев.
  • Добавлено заполнение для инструкций #requires.
  • Добавлено заполнение нажатием клавиши TAB для параметра View командлетов Format-*.
  • Добавлена поддержки для завершения аргументов на основе классов.

PowerShell 7.3

  • Исправлено завершение нажатием клавиши TAB в блоке скрипта для ValidateScriptAttribute.
  • Добавлено заполнение нажатием клавиши TAB для меток циклов после break и continue.
  • Улучшение хэш-хэш-заполнения в нескольких сценариях
    • Сплаттинг параметров
    • Параметр Arguments для Invoke-CimMethod
    • Параметр FilterHashtable для Get-WinEvent
    • Параметр Property для командлетов CIM
    • Удаление дублей из сценариев автоматического заполнения элементов
  • Поддержка косой черты в имени сетевой папки (UNC-пути) при заполнении.
  • Улучшение автозаполнения элементов.
  • Приоритезация заполнений ValidateSet по отношению к перечислениями или параметрам.
  • Добавлена поддержка вывода типа для универсальных методов с параметрами типа.
  • Улучшение вывода типов и завершения
    • Позволяет отображать методы в результатах завершения для ForEach-Object -MemberName.
    • Предотвращает завершение выражений, возвращающих void, например [void]("").
    • Разрешает отображение конструкторов классов, отличных от используемых по умолчанию, если завершение класса основано на AST.

Другие способы улучшения функции заполнения нажатием клавиши TAB для параметров команд

Встроенным расширением заполнения нажатием клавиши TAB управляет внутренняя функция TabExpansion или TabExpansion2. Можно создавать функции или модули, которые заменяют поведение этих функций по умолчанию. Примеры можно найти в коллекции PowerShell, выполнив поиск по ключевому слову TabExpansion.

Использование атрибутов ValidateSet или ArgumentCompletions с параметрами

Атрибут ArgumentCompletions позволяет добавлять значения заполнения нажатием клавиши TAB в определенный параметр. Атрибут ArgumentCompletions аналогичен ValidateSet. Оба атрибута принимают список значений, которые будут представлены, когда пользователь нажимает клавишу TAB после имени параметра. Однако в отличие от ValidateSet, значения не проверяются.

Дополнительные сведения см. в разделе:

Использование атрибута ArgumentCompleter или Register-ArgumentCompleter с параметрами

Средство заполнения аргументов — это блок скрипта или функция, которая обеспечивает динамическое заполнение нажатием клавиши TAB для значений параметров.

Атрибут ArgumentCompleter позволяет зарегистрировать функцию, которая предоставляет значения заполнения нажатием клавиши TAB для параметра. Функция средства заполнения аргументов должна быть доступна функции, содержащей параметр с атрибутом ArgumentCompleter. Обычно функция определяется в одном скрипте или модуле.

Дополнительные сведения см. в статье ArgumentCompleter.

Командлет Register-ArgumentCompleter регистрирует блок скрипта в качестве функции средства заполнения аргументов во время выполнения для любой указанной команды. Это позволяет определять средства заполнения аргументов за пределами скрипта или модуля или для собственных команд. Дополнительные сведения см. в статье Register-ArgumentCompleter.

Прогнозная технология IntelliSense в PSReadLine 2.1

В PSReadLine 2.1.0 была представлена возможность прогнозной технологии IntelliSense. Прогнозный IntelliSense предлагает варианты полных команд на основе элементов из журнала PSReadLine.

В PSReadLine 2.2.2 улучшены возможности прогнозной технологии IntelliSense за счет поддержки подключаемых модулей, которые используют расширенную логику для предложения полных команд. Первым подключаемым модулем для прогнозного IntelliSense стал модуль Az.Tools.Predictor. В нем используется машинное обучение для прогнозирования команды Azure PowerShell, которую необходимо выполнить, и используемых с ней параметров.

Дополнительные сведения см. в статье Использование средств прогнозирования.