支援 Cmdlet 參數中的通配符

通常,您必須設計 Cmdlet,以針對一組資源執行,而不是針對單一資源執行。 例如,Cmdlet 可能需要找出數據存放區中具有相同名稱或擴展名的所有檔案。 當您設計將針對資源群組執行的 Cmdlet 時,您必須提供通配符的支援。

備註

使用通配符有時稱為 通配符。

使用通配符的 Windows PowerShell Cmdlet

許多 Windows PowerShell Cmdlet 支援其參數值的通配符。 例如,幾乎每個具有 Name 或 Path 參數的 Cmdlet 都支援這些參數的通配符。 (雖然大部分具有 Path 參數的 Cmdlet 也有不支援通配符的 LiteralPath 參數。下列命令示範如何使用通配符傳回目前會話中名稱包含 Get 動詞的所有 Cmdlet。

Get-Command get-*

支援的通配符

Windows PowerShell 支援下列通配符。

通配符 說明 範例 比賽 不一致
* 比對零或多個字元,從指定的位置開始 a* A、ag、Apple
? 比對指定位置的任何字元 ?n 、in、on 跑
[ ] 比對字元範圍 [a-l]ook book, cook, look nook, took
[ ] 符合指定的字元 [bn]ook book, nook 廚師, 外觀

當您設計支援通配符的 Cmdlet 時,允許通配符的組合。 例如,下列命令會使用 Get-ChildItem Cmdlet 來擷取 C:\Techdocs 資料夾中的所有 .txt 檔案,並以字母 “a” 開頭為 “l”。

Get-ChildItem C:\techdocs\[a-l]\*.txt

上一個命令會使用範圍通配符 [a-l] 來指定檔名應該以字元 “a” 到 “l” 開頭,並使用 * 通配符做為檔名第一個字母與 .txt 擴展名之間任何字元的佔位符。

下列範例使用範圍通配符模式來排除字母 「d」,但包含 「a」 到 「f」 的所有其他字母。

Get-ChildItem C:\techdocs\[a-cef]\*.txt

處理通配符模式中的常值字元

如果您指定的通配符模式包含不應解譯為通配符的常值字元,請使用反引號字元 (`) 作為逸出字元。 當您在 PowerShell API 中指定常值字元時,請使用單一反引號。 當您在 PowerShell 命令提示字元中指定常值字元時,請使用兩個反引號。

例如,下列模式包含兩個必須字面採用的括弧。

在 PowerShell API 中使用時,請使用:

  • “John Smith '[*']”

從 PowerShell 命令提示字元使用時:

  • “John Smith ''[*'']”

此模式符合 “John Smith [Marketing]” 或 “John Smith [Development]”。 例如:

PS> "John Smith [Marketing]" -like "John Smith ``[*``]"
True

PS> "John Smith [Development]" -like "John Smith ``[*``]"
True

Cmdlet 輸出和通配符

當 Cmdlet 參數支援通配符時,作業通常會產生數位輸出。 有時候,支持數位輸出並不合理,因為使用者可能只使用單一專案。 例如,Set-Location Cmdlet 不支援數位輸出,因為使用者只會設定單一位置。 在此實例中,Cmdlet 仍然支援通配符,但它會強制解析為單一位置。

另請參閱

撰寫 Windows PowerShell Cmdlet

通配符Pattern 類別