简短说明
介绍如何在 PowerShell 中使用通配符。
详细说明
通配符表示一个或多个字符。 可以使用它们在命令中创建单词模式。 通配符表达式与 -like 运算符或接受通配符的任何参数一起使用。
例如,若要将 C:\Techdocs 目录中的所有文件与 .ppt 文件扩展名匹配,请键入:
Get-ChildItem C:\Techdocs\*.ppt
在这种情况下,星号(*)通配符表示 .ppt 文件扩展名之前显示的任何字符。
通配符表达式比正则表达式更简单。 有关详细信息,请参阅 about_Regular_Expressions。
PowerShell 支持以下通配符:
| 通配符 | DESCRIPTION | 示例: | 匹配 | 无匹配项 |
|---|---|---|---|---|
* |
匹配零个或多个字符 | a* |
aA、ag、苹果 | 香蕉 |
? |
匹配该位置的一个字符 | ?n |
an、in、on | 跑 |
[ ] |
匹配一系列字符 | [a-l\]ook |
书, 做饭, 看 | 服用 |
[ ] |
匹配特定字符 | [bc]ook |
预订, 厨师 | 挂钩 |
`* |
将任何字符匹配为文本(非通配符) | 12`*4 |
12*4 | 1234 |
可以在同一个单词模式中包含多个通配符。 例如,若要查找名称以字母开头的文本文件, 到 l,请键入:
Get-ChildItem C:\Techdocs\[a-l]*.txt
在某些情况下,你可能想要匹配文本字符,而不是将其视为通配符。 在这些情况下,可以使用反杆(`)字符来转义通配符,以便使用文本字符值对其进行比较。 例如,'*hello`?*' 匹配包含“hello?”的字符串。
许多 cmdlet 接受参数值中的通配符。 每个 cmdlet 的帮助主题描述哪些参数接受通配符。 对于接受通配符的参数,其用法不区分大小写。
可以在命令和脚本块中使用通配符,例如创建表示属性值的单词模式。 例如,以下命令获取 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)"
}
}