コマンドレット パラメーターでワイルドカード文字をサポートする
多くの場合、1つのリソースに対してではなく、リソースのグループに対して実行するようにコマンドレットを設計する必要があります。 たとえば、コマンドレットでは、同じ名前または拡張子を持つデータストア内のすべてのファイルを検索することが必要になる場合があります。 リソースグループに対して実行されるコマンドレットを設計するときは、ワイルドカード文字のサポートを提供する必要があります。
注意
ワイルドカード文字の使用は、 グロビング と呼ばれることもあります。
Windows PowerShellワイルドカードを使用するコマンドレット
多くの Windows PowerShell コマンドレットは、パラメーター値としてワイルドカード文字をサポートしています。 たとえば、パラメーターまたはパラメーターを持つほとんどすべてのコマンドレットは、 Name
Path
これらのパラメーターに対してワイルドカード文字をサポートしています。 (パラメーターを持つほとんどのコマンドレットには Path
、 LiteralPath
ワイルドカード文字をサポートしないパラメーターもあります)。次のコマンドは、名前に Get 動詞が含まれている現在のセッションのすべてのコマンドレットを返すために、ワイルドカード文字を使用する方法を示しています。
Get-Command get-*
サポートされているワイルドカード文字
Windows PowerShell は、次のワイルドカード文字をサポートしています。
ワイルドカード | 説明 | 例 | [一致する] | [次の値に一致しない] |
---|---|---|---|---|
* | 指定された位置を開始位置として、0個以上の文字と一致します | a* |
A、ag、Apple | |
? | 指定した位置にある任意の文字と一致します | ?n |
、In、on | 済み |
[ ] | 文字の範囲に一致します。 | [a-l]ook |
書籍、クック、ルック | nook、所要時間 |
[ ] | 指定した文字と一致します | [bn]ook |
book、nook | クック、外観 |
ワイルドカード文字をサポートするコマンドレットを設計する場合は、ワイルドカード文字の組み合わせを許可します。 たとえば、次のコマンドは、コマンドレットを使用して、 Get-ChildItem
c:\ の docs フォルダー内にあり、"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
ワイルドカードパターンでのリテラル文字の処理
指定したワイルドカードパターンに、ワイルドカード文字として interpretted ないリテラル文字が含まれている場合は、バックティック文字 ( `
) をエスケープ文字として使用します。 PowerShell API のリテラル文字を指定する場合は、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つの場所を強制的に解決します。
参照
Writing a Windows PowerShell Cmdlet (Windows PowerShell コマンドレットの記述)