次の方法で共有


コマンドレット パラメーターでワイルドカード文字をサポートする

多くの場合、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 つの場所に強制します。

こちらもご覧ください

Windows PowerShell コマンドレット の作成

WildcardPattern クラス