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


Поддержка подстановочных знаков в параметрах командлета

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

Примечание.

Использование подстановочных знаков иногда называется глоббинга.

Командлеты Windows PowerShell, использующие подстановочные знаки

Многие командлеты Windows PowerShell поддерживают подстановочные знаки для значений параметров. Например, почти каждый командлет с параметром Name или Path поддерживает подстановочные знаки для этих параметров. (Хотя большинство командлетов с параметром Path также имеют параметр LiteralPath, который не поддерживает подстановочные знаки.) Следующая команда показывает, как используется подстановочный знак для возврата всех командлетов в текущем сеансе, имя которого содержит команду Get.

Get-Command get-*

Поддерживаемые подстановочные знаки

Windows PowerShell поддерживает следующие подстановочные знаки.

Подстановочный знак Описание Пример Матчи Не соответствует
* Соответствует нулю или нескольким символам, начиная с указанной позиции a* A, ag, Apple
? Соответствует любому символу в указанной позиции ?n В, в бежать
[ ] Соответствует диапазону символов [a-l]ook книга, приготовление, взгляд nook, взял
[ ] Соответствует указанным символам [bn]ook книга, nook приготовление, посмотрите

При разработке командлетов, поддерживающих подстановочные знаки, можно использовать сочетания подстановочных знаков. Например, следующая команда использует командлет Get-ChildItem для получения всех .txt файлов, которые находятся в папке C:\Techdocs, и начинаются с букв "a" через "l".

Get-ChildItem C:\techdocs\[a-l]\*.txt

Предыдущая команда использует подстановочный знак диапазона [a-l], чтобы указать, что имя файла должно начинаться с символов "a" через "l" и использует * подстановочный знак в качестве заполнителя для всех символов между первой буквой имени файла и расширением .txt.

В следующем примере используется шаблон подстановочного знака диапазона, который исключает букву "d", но включает все остальные буквы из "a" через "f".

Get-ChildItem C:\techdocs\[a-cef]\*.txt

Обработка литеральных символов в шаблонах подстановочных знаков

Если указанный шаблон подстановочных знаков содержит литеральные символы, которые не должны интерпретироваться как подстановочные знаки, используйте символ backtick (`) в качестве escape-символа. При указании литеральных символов в API PowerShell используйте один обратный символ. При указании литеральных символов в командной строке PowerShell используйте два обратных символа.

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

При использовании в API PowerShell выполните следующие действия:

  • "Джон Смит "[*']"

При использовании из командной строки PowerShell:

  • "Джон Смит ''[*'']"

Этот шаблон соответствует "Джон Смит [Маркетинг]" или "Джон Смит [Разработка]". Рассмотрим пример.

PS> "John Smith [Marketing]" -like "John Smith ``[*``]"
True

PS> "John Smith [Development]" -like "John Smith ``[*``]"
True

Выходные данные командлета и подстановочные знаки

Если параметры командлета поддерживают подстановочные знаки, операция обычно создает выходные данные массива. Иногда нет смысла поддерживать выходные данные массива, так как пользователь может использовать только один элемент. Например, командлет Set-Location не поддерживает выходные данные массива, так как пользователь задает только одно расположение. В этом экземпляре командлет по-прежнему поддерживает подстановочные знаки, но он заставляет разрешение в одном расположении.

См. также

написание командлета Windows PowerShell

класс WildcardPattern