关于通配符
简短说明
介绍如何在 PowerShell 中使用通配符。
详细说明
通配符表示一个或多个字符。 可以使用它们在命令中创建单词模式。 例如,若要获取目录中具有.ppt
文件扩展名的所有文件C:\Techdocs
,请键入:
Get-ChildItem C:\Techdocs\*.ppt
在这种情况下,星号 (*
) 通配符表示出现在文件扩展名之前 .ppt
的任何字符。
PowerShell 支持以下通配符:
通配符 | 说明 | 示例 | 匹配 | 无匹配项 |
---|---|---|---|---|
* | 匹配零个或多个字符 | a* | aA、ag、Apple | 香蕉 |
? | 匹配该位置中的一个字符 | ?n | 一个,in,on | 跑 |
[ ] | 匹配一系列字符 | [a-l]ook | 书, 厨师, 看 | 采取了 |
[ ] | 匹配特定字符 | [bc]ook | book, cook | 挂钩 |
可以在同一个单词模式中包含多个通配符。 例如,若要查找名称以字母 a 到 l 开头的文本文件,请键入:
Get-ChildItem C:\Techdocs\[a-l]*.txt
许多 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)"
}
}