Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткое описание
Описывает использование подстановочных знаков в PowerShell.
Длинное описание
Подстановочные знаки представляют один или несколько символов. Их можно использовать для создания шаблонов слов в командах. Выражения подстановочных знаков используются с оператором -like или с любым параметром, принимающий подстановочные знаки.
Например, чтобы сопоставить все файлы в каталоге C:\Techdocs с расширением .ppt имени файла, введите:
Get-ChildItem C:\Techdocs\*.ppt
В этом случае подстановочный знак звездочки (*) представляет все символы, которые отображаются перед расширением .ppt имени файла.
Выражения подстановочных знаков проще регулярных выражений. Дополнительные сведения см. в about_Regular_Expressions.
PowerShell поддерживает следующие подстановочные знаки:
-
*— соответствие нулю или нескольким символам-
a*совпаденияaA,agиApple -
a*не соответствуетbanana
-
-
?— Для строк следует соответствовать одному символу в этой позиции.-
?nсовпаденияan,inиon -
?nне соответствуетran
-
-
?— для файлов и каталогов, совпадение с нулевым или одним символом в этой позиции-
?.txtсовпаденияa.txtиb.txt -
?.txtне соответствуетab.txt
-
-
[ ]— сопоставление диапазона символов-
[a-l]ookсовпаденияbook,cookиlook -
[a-l]ookне соответствуетtook
-
-
[ ]— сопоставление определенных символов-
[bc]ookсовпаденияbookиcook -
[bc]ookне соответствуетhook
-
-
`*— сопоставление любого символа как литерала (а не подстановочного знака)-
12`*4, соответствующий12*4 -
12`*4не соответствует1234
-
Можно включить несколько подстановочных знаков в один и тот же шаблон слова. Например, чтобы найти текстовые файлы с именами, начинающимися с буквы через l, введите:
Get-ChildItem C:\Techdocs\[a-l]*.txt
В некоторых случаях требуется сопоставить литеральный символ, а не рассматривать его как подстановочный знак. В этих случаях можно использовать символ backtick (`) для экранирования подстановочного знака, чтобы он сравнивался с использованием значения литерального символа. Например, '*hello`?*' соответствует строкам, содержащим "hello?".
Многие командлеты принимают подстановочные знаки в значениях параметров. В разделе справки для каждого командлета описывается, какие параметры принимают подстановочные знаки. Для параметров, которые принимают подстановочные знаки, их использование не учитывает регистр.
Можно использовать подстановочные знаки в командах и блоках скриптов, например для создания шаблона слова, представляющего значения свойств. Например, следующая команда получает службы, в которых значение свойства ServiceType включает Interactive.
Get-Service | Where-Object {$_.ServiceType -like "*Interactive*"}
В следующем примере if инструкция содержит условие, которое использует подстановочные знаки для поиска значений свойств. Если описание точки восстановления включает PowerShell, команда добавляет значение свойства точки восстановления CreationTime в файл журнала.
$p = Get-ComputerRestorePoint
foreach ($point in $p) {
if ($point.Description -like "*PowerShell*") {
Add-Content -Path C:\TechDocs\RestoreLog.txt "$($point.CreationTime)"
}
}
Экранирование подстановочных знаков в именах файлов и каталогов
Примечание.
Подстановочный знак для элементов файловой системы работает не так, как для строк. Дополнительные сведения см. в разделе "Примечания" метода DirectoryInfo.GetFiles(String, ListionOptions).
При попытке получить доступ к файлу или каталогу с подстановочными знаками имя, необходимо экранировать подстановочные знаки. Рассмотрим следующие файлы:
PS> Get-ChildItem
Directory: D:\temp\test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/3/2025 3:39 PM 41 file[1].txt
-a--- 11/3/2025 3:39 PM 41 file[2].txt
-a--- 11/3/2025 3:39 PM 41 file[3].txt
Символы квадратной скобки ([]) являются подстановочными знаками, поэтому их необходимо экранировать при попытке получить файл с помощью одного из командлетов Item, таких как Get-Item.
PS> Get-Item file`[1`].txt
Однако в этом примере произошел сбой, так как значение имени файла привязано к параметру Path , который поддерживает подстановочные знаки. В этом случае `[ шаблон разрешается в обычный [режим, который параметр Path интерпретирует как подстановочный знак. Существует три способа устранить эту проблему:
Экранируйте символы backtick.
PS> Get-Item -Path file``[1``].txt Directory: D:\temp\test Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 11/3/2025 3:39 PM 41 file[1].txtПоместите имя файла в одинарные кавычки, чтобы обратные типы не были развернуты перед привязкой к параметру Path .
PS> Get-Item -Path 'file`[1`].txt' Directory: D:\temp\test Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 11/3/2025 3:39 PM 41 file[1].txtИспользование параметра LiteralPath
PS> Get-Item -LiteralPath file[1].txt Directory: D:\temp\test Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 11/3/2025 3:39 PM 41 file[1].txt
См. также
PowerShell