多くの場合、1 つのリソースに対して実行するのではなく、リソースのグループに対して実行するコマンドレットを設計する必要があります。 たとえば、コマンドレットは、同じ名前または拡張子を持つデータ ストア内のすべてのファイルを検索する必要がある場合があります。 リソースのグループに対して実行されるコマンドレットを設計するときは、ワイルドカード文字のサポートを提供する必要があります。
注
ワイルドカード文字の使用は、globbingと呼ばれることもあります。
ワイルドカードを使用する Windows PowerShell コマンドレット
多くの Windows PowerShell コマンドレットでは、パラメーター値のワイルドカード文字がサポートされています。 たとえば、Name
パラメーターまたは Path
パラメーターを持つほぼすべてのコマンドレットで、これらのパラメーターのワイルドカード文字がサポートされます。 (Path
パラメーターを持つほとんどのコマンドレットには、ワイルドカード文字をサポートしない LiteralPath
パラメーターもあります)。次のコマンドは、名前に Get 動詞が含まれる現在のセッションのすべてのコマンドレットを返すためにワイルドカード文字を使用する方法を示しています。
Get-Command get-*
サポートされているワイルドカード文字
Windows PowerShell では、次のワイルドカード文字がサポートされています。
ワイルドカード | 説明 | 例 | 試合 (if the context is sports-related) | 一致しません |
---|---|---|---|---|
* | 指定した位置から始まる 0 個以上の文字に一致します。 | a* |
A、ag、Apple | |
? | 指定した位置にある任意の文字と一致します。 | ?n |
An、in、on | 走った |
[ ] | 文字の範囲に一致します | [a-l]ook |
本、料理、見る | nook、 |
[ ] | 指定した文字と一致します | [bn]ook |
book、nook | cook、look |
ワイルドカード文字をサポートするコマンドレットを設計する場合は、ワイルドカード文字の組み合わせを許可します。 たとえば、次のコマンドでは、Get-ChildItem
コマンドレットを使用して、C:\Techdocs フォルダーにあり、文字 "a" から "l" で始まるすべての .txt ファイルを取得します。
Get-ChildItem C:\techdocs\[a-l]\*.txt
前のコマンドでは、範囲ワイルドカード [a-l]
を使用して、ファイル名が "a" から "l" までの文字で始まる必要があることを指定し、ファイル名の最初の文字と .txt 拡張子の間の任意の文字のプレースホルダーとして *
ワイルドカード文字を使用します。
次の例では、文字 "d" を除外する範囲ワイルドカード パターンを使用しますが、"a" から "f" までの他のすべての文字が含まれています。
Get-ChildItem C:\techdocs\[a-cef]\*.txt
ワイルドカード パターンでのリテラル文字の処理
指定するワイルドカード パターンに、ワイルドカード文字として解釈すべきでないリテラル文字が含まれている場合は、エスケープ文字としてバックティック文字 (`
) を使用します。 PowerShell API でリテラル文字 int を指定する場合は、1 つのバックティックを使用します。 PowerShell コマンド プロンプトでリテラル文字を指定する場合は、2 つのバックティックを使用します。
たとえば、次のパターンには、リテラルで取得する必要がある 2 つの角かっこが含まれています。
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
コマンドレットの出力とワイルドカード文字
コマンドレット パラメーターでワイルドカード文字がサポートされている場合、通常、この操作では配列出力が生成されます。
場合によっては、ユーザーが 1 つの項目のみを使用する可能性があるため、配列出力をサポートしても意味がありません。 たとえば、Set-Location
コマンドレットは、ユーザーが 1 つの場所のみを設定するため、配列出力をサポートしていません。 この例では、コマンドレットはワイルドカード文字を引き続きサポートしますが、解決を 1 つの場所に強制します。
こちらもご覧ください
PowerShell