共用方式為


支援 Cmdlet 參數中的通配符

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

備註

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

使用通配符的 Windows PowerShell Cmdlet

許多 Windows PowerShell Cmdlet 支援其參數值的通配符。 例如,幾乎每個具有 NamePath 參數的 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 類別