Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Часто вам придется разработать командлет для выполнения в группе ресурсов, а не для одного ресурса. Например, командлету может потребоваться найти все файлы в хранилище данных с одинаковым именем или расширением. При разработке командлета, который будет выполняться в группе ресурсов, необходимо предоставить поддержку подстановочных знаков.
Примечание.
Использование подстановочных знаков иногда называется глоббинга.
Командлеты 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
не поддерживает выходные данные массива, так как пользователь задает только одно расположение. В этом экземпляре командлет по-прежнему поддерживает подстановочные знаки, но он заставляет разрешение в одном расположении.
См. также
PowerShell