about_Wildcards
簡短描述
描述如何在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
您可以在相同的單字模式中包含多個通配符。 例如,若要尋找名稱開頭為字母 a 到 l 的文字檔,請輸入:
Get-ChildItem C:\Techdocs\[a-l]*.txt
在某些情況下,您可能想要比對常值字元,而不是將它視為通配符。 在這些情況下,您可以使用反引號字元來`
逸出通配符,以便使用常值字元值進行比較。 例如, '*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)"
}
}