about_Wildcards
簡単な説明
PowerShell でワイルドカード文字を使用する方法について説明します。
詳細な説明
ワイルドカード文字は、1 つまたは複数の文字を表します。 それらを使用して、コマンドで単語パターンを作成できます。 ワイルドカード式は、 -like
演算子またはワイルドカードを受け入れる任意のパラメーターで使用されます。
たとえば、 C:\Techdocs
ディレクトリ内のすべてのファイルを .ppt
ファイル名拡張子と照合するには、次のように入力します。
Get-ChildItem C:\Techdocs\*.ppt
この場合、アスタリスク (*
) ワイルドカード文字は、 .ppt
ファイル名拡張子の前に表示されるすべての文字を表します。
ワイルドカード式は正規表現よりも単純です。 詳細については、「 about_Regular_Expressions」を参照してください。
PowerShell では、次のワイルドカード文字がサポートされています。
*
- 0 個以上の文字に一致するa*
aA
、ag
、およびApple
a*
一致しないbanana
?
- 文字列の場合は、その位置の 1 文字に一致します?n
an
、in
、およびon
?n
一致しないran
?
- ファイルとディレクトリの場合は、その位置の 0 文字または 1 文字に一致します?.txt
a.txt
と一致します。b.txt
?.txt
一致しないab.txt
[ ]
- 文字の範囲に一致する[a-l]ook
book
、cook
、およびlook
[a-l]ook
一致しないtook
[ ]
- 特定の文字に一致する[bc]ook
book
と一致します。cook
[bc]ook
一致しないhook
`*
- 任意の文字をリテラルとして照合します (ワイルドカード文字ではありません)12`*4
と一致する12*4
12`*4
一致しない1234
同じ単語パターンに複数のワイルドカード文字を含めることができます。 たとえば、l で始まる文字 a で始まる名前のテキスト ファイルを検索するには、次のように入力します。
Get-ChildItem C:\Techdocs\[a-l]*.txt
Note
ファイルシステム項目のワイルドカード マッチングは、文字列の場合とは動作が異なります。 詳細については、DirectoryInfo.GetFiles(String, EnumerationOptions) メソッドの Remarks セクションを参照してください。
リテラル文字をワイルドカード文字として扱う代わりに、リテラル文字と一致させる必要がある場合があります。 このような場合は、バックティック (`
) 文字を使用してワイルドカード文字をエスケープし、リテラル文字値を使用して比較することができます。 たとえば、 '*hello`?*'
は "hello?" を含む文字列と一致します。
多くのコマンドレットでは、パラメーター値にワイルドカード文字を使用できます。 各コマンドレットのヘルプ トピックでは、ワイルドカード文字を使用できるパラメーターについて説明します。 ワイルドカード文字を受け取るパラメーターでは、大文字と小文字が区別されません。
コマンドおよびスクリプト ブロックでワイルドカード文字を使用して、プロパティ値を表す単語パターンを作成できます。 たとえば、次のコマンドは、 ServiceType プロパティ値に Interactive が含まれるサービスを取得します。
Get-Service | Where-Object {$_.ServiceType -Like "*Interactive*"}
次の例では、 If
ステートメントに、ワイルドカード文字を使用してプロパティ値を検索する条件が含まれています。 復元ポイントの Description に PowerShell が含まれている場合、コマンドは復元ポイントの CreationTime プロパティの値をログ ファイルに追加します。
$p = Get-ComputerRestorePoint
foreach ($point in $p) {
if ($point.description -like "*PowerShell*") {
Add-Content -Path C:\TechDocs\RestoreLog.txt "$($point.CreationTime)"
}
}
関連項目
PowerShell