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


Использование завершения вкладок в оболочке

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

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

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

Встроенные функции завершения вкладок

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

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

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

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

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

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

Примеры завершения вкладки и меню

Другие улучшения завершения вкладки

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

PowerShell 7.0

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

PowerShell 7.2

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

PowerShell 7.3

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

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

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

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

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

Дополнительные сведения можно найти здесь

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

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

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

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

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

Предсказующая IntelliSense в PSReadLine

PSReadLine 2.1.0 представила функцию Predictive IntelliSense . Предиктивный IntelliSense предоставляет предложения для полных команд на основе элементов из истории PSReadLine.

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

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