Использование заполнения нажатием клавиши 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
Каждая новая версия 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, которую необходимо выполнить, и используемых с ней параметров.
Дополнительные сведения см. в статье Использование средств прогнозирования.
PowerShell