通常,您必須設計 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 仍然支援通配符,但它會強制解析為單一位置。