共用方式為


about_Wildcards

簡短描述

描述如何在PowerShell中使用通配符。

完整描述

通配符代表一或多個字元。 您可以使用它們在命令中建立文字模式。 通配符表達式會搭配 -like 運算符或接受通配符的任何參數使用。

例如,若要將目錄中的所有檔案 C:\Techdocs.ppt 擴展名相符,請輸入:

Get-ChildItem C:\Techdocs\*.ppt

在此情況下,星號 () * 通配符代表擴展名之前 .ppt 出現的任何字元。

通配符表示式比正則表達式簡單。 如需詳細資訊,請參閱 about_Regular_Expressions

PowerShell 支援下列通配符:

萬用字元 描述 範例 相符項目 不相符
* 比對零個或多個字元 a* aA、ag、Apple 香蕉
? 比對該位置中的一個字元 ?n 、in、on
[ ] 比對字元範圍 [a-l\]ook 書籍、操作者、外觀 已花費
[ ] 比對特定字元 [bc]ook 書籍、操作者
`* 比對任何字元做為常值 (而非通配符) 12`*4 12*4 1234

您可以在相同的文字模式中包含多個通配符。 例如,若要尋找名稱開頭為 al 之字母的文字檔,請輸入:

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)"
  }
}

另請參閱