次の方法で共有


about_Wildcards

簡単な説明

PowerShell でワイルドカード文字を使用する方法について説明します。

詳細な説明

ワイルドカード文字は、1 つまたは複数の文字を表します。 それらを使用して、コマンドで単語パターンを作成できます。 Wildカード 式は、演算子またはワイルドカードを受け入れる任意のパラメーターと共-likeに使用されます。

たとえば、ディレクトリ内 C:\Techdocs のすべてのファイルをファイル名拡張子と .ppt 照合するには、次のように入力します。

Get-ChildItem C:\Techdocs\*.ppt

この場合、アスタリスク (*) ワイルドカード文字は、ファイル名拡張子の前に表示されるすべての文字を.ppt表します。

ワイルドカード式は正規表現よりも単純です。 詳細については、「about_Regular_Expressions」を参照してください

PowerShell では、次の野生のカード文字がサポートされています。

  • * - 0 個以上の文字に一致する
    • a*一致、aAag、およびApple
    • a* 一致しない banana
  • ? - 文字列の場合は、その位置の 1 文字に一致します
    • ?n一致、anin、およびon
    • ?n 一致しない ran
  • ? - ファイルとディレクトリの場合は、その位置の 0 文字または 1 文字に一致します
    • ?.txt一致とa.txtb.txt
    • ?.txt 一致しない ab.txt
  • [ ] - 文字の範囲に一致する
    • [a-l]ook一致、bookcook、およびlook
    • [a-l]ook 一致しない took
  • [ ] - 特定の文字に一致する
    • [bc]ook一致とbookcook
    • [bc]ook 一致しない hook
  • `*- 任意の文字をリテラルとして一致させる (ワイルドカード文字ではない)
    • 12`*4 と一致する 12*4
    • 12`*4 一致しない 1234

同じ単語パターンに複数のワイルドカード文字を含めることができます。 たとえば、文字 a から l で始まる名前のテキスト ファイルを検索するには、次のように入力します。

Get-ChildItem C:\Techdocs\[a-l]*.txt

Note

ファイルシステム項目のワイルドカードマッチングは、文字列の場合とは動作が異なります。 詳細については、DirectoryInfo.GetFiles(String, EnumerationOptions) メソッドの「解説」セクションを参照してください。

リテラル文字をワイルドカード文字として扱う代わりに、リテラル文字と一致させる必要がある場合があります。 このような場合は、バックティック (`) 文字を使用してワイルドカード文字をエスケープし、リテラル文字値を使用して比較することができます。 たとえば、 '*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)"
  }
}

関連項目