about_Wildcards

簡短描述

描述如何在 PowerShell 中使用萬用字元。

詳細描述

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

例如,若要比對 C:\Techdocs 目錄中 .ppt 具有副檔名的所有檔案,請輸入:

Get-ChildItem C:\Techdocs\*.ppt

在此情況下,星號 ( * ) 萬用字元代表副檔名之前 .ppt 出現的任何字元。

萬用字元運算式比正則運算式簡單。 如需詳細資訊,請參閱 about_Regular_Expressions

PowerShell 支援下列萬用字元:

  • * - 比對零個或多個字元
    • a*aA符合 、 agApple
    • a* 不符合 banana
  • ? - 比對該位置中的一個字元
    • ?nan符合 、 inon
    • ?n 不符合 ran
  • [ ] - 比對字元範圍
    • [a-l]ookbook符合 、 cooklook
    • [a-l]ook 不符合 took
  • [ ] - 比對特定字元
    • [bc]ookbook符合 和cook
    • [bc]ook 不符合 hook
  • `* - 比對任何字元做為常值(不是萬用字元)
    • 12`*4 符合 12*4
    • 12`*4 不符合 1234

您可以在相同的單字模式中包含多個萬用字元。 例如,若要尋找名稱開頭為字母 a 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)"
  }
}

另請參閱