簡単な説明
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と一致しません
-
-
[ ]- 文字の範囲に一致する-
[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を使用して
Get-ChildItem C:\Techdocs\[a-l]*.txt
リテラル文字をワイルドカード文字として扱う代わりに、リテラル文字と一致させる必要がある場合があります。 このような場合は、バックティック (`) 文字を使用してワイルドカード文字をエスケープし、リテラル文字値を使用して比較することができます。 たとえば、'*hello`?*' は "hello?" を含む文字列と一致します。
多くのコマンドレットでは、パラメーター値にワイルドカード文字を使用できます。 各コマンドレットのヘルプ トピックでは、ワイルドカード文字を使用できるパラメーターについて説明します。 ワイルドカード文字を受け取るパラメーターでは、大文字と小文字が区別されません。
コマンドおよびスクリプト ブロックでワイルドカード文字を使用して、プロパティ値を表す単語パターンを作成できます。 たとえば、次のコマンドは、
Get-Service | Where-Object {$_.ServiceType -Like "*Interactive*"}
次の例では、If ステートメントに、ワイルドカード文字を使用してプロパティ値を検索する条件が含まれています。 復元ポイントの
$p = Get-ComputerRestorePoint
foreach ($point in $p) {
if ($point.description -like "*PowerShell*") {
Add-Content -Path C:\TechDocs\RestoreLog.txt "$($point.CreationTime)"
}
}