[登録されているタグ]

[記事公開日]2025/12/18

PowerShellでファイルを検索する|Select-Stringの使い方

📝 はじめに

PowerShellでログ調査や設定ファイルの確認をしていると、
「特定の文字列がどこに書かれているか探したい」
「大量のログからエラー行だけを抜き出したい」
「複数ファイルをまとめて検索したい」
という場面によく出会います。

そんなときに活躍するのが
Select-String です。
PowerShellにおける文字列検索(grep相当)の中核となるコマンドです。

こんな場面で便利

  • ログファイルからエラー行を探したい
  • 設定ファイル内のキーワードを確認したい
  • 複数ファイルをまとめて検索したい

✅ このコマンドでできること(要点)

  • ファイル内の文字列を検索できる
  • 複数ファイル・再帰検索に対応
  • 正規表現による検索ができる
  • 検索結果をオブジェクトとして扱える

✅ Select-String でできること

Select-String は、
テキストデータの中から
指定した文字列やパターンを含む行を抽出するコマンドです。

単なる表示用コマンドではなく、
検索結果はオブジェクトとして返されるため、
その後の加工・保存・集計が簡単に行えます。

cmd の findstr
Linux の grep に近い役割ですが、
PowerShellではより柔軟に扱えるのが特徴です。

🧩 基本構文

Select-String -Path 検索対象 -Pattern 検索文字列

-Pattern には検索したい文字列や正規表現を指定します。

▶ 基本的な使い方(まずこれだけ)

🔹 ファイル内から文字列を検索する

Select-String -Path C:\Logs\app.log -Pattern "ERROR"

ERROR を含む行が表示されます。
この結果が表示されていれば、検索は正常に行えています。

🔹 複数ファイルをまとめて検索する

Select-String -Path C:\Logs\*.log -Pattern "failed"

指定したフォルダ内の複数ファイルが対象になります。

🛠 よく使われる指定例

🔹 再帰的にファイルを検索する

Select-String -Path C:\Logs\* -Pattern "Exception" -Recurse

サブフォルダも含めて検索できます。

🔹 大文字・小文字を区別せず検索する

Select-String -Path C:\Logs\app.log -Pattern "error" -CaseSensitive:$false

ログの表記揺れ対策としてよく使われます。

💼 実務でよく使う使用例(応用)

🔹 エラー行だけをファイルに保存する

Select-String C:\Logs\app.log "ERROR" |
Out-File C:\Logs\error_only.txt

🔹 行番号付きで検索結果を確認する

Select-String C:\Logs\app.log "WARN" |
Select-Object Filename, LineNumber, Line
組み合わせ例

  • Get-ChildItem で対象ファイルを列挙
  • Out-File で検索結果を保存
  • ログ調査・障害対応の効率化

🧩 よくある勘違い・つまずきポイント

  • 正規表現が使われていることを知らずに戸惑う
  • バイナリファイルを検索してしまう
  • 検索対象のパス指定ミス
  • 文字コードの違いでヒットしない場合がある
  • find や findstr と同じ感覚で使おうとする

🔄 cmdとの違いについて

cmd の findstr は文字列検索のみですが、
PowerShell の Select-String
検索結果をオブジェクトとして扱える点が大きな違いです。

そのため、行番号・ファイル名・内容を
後続処理で自由に加工できます。

⚠ エラー・うまく動かないときの確認ポイント

  • 検索対象のファイル・フォルダが存在しているか
  • 正規表現の書き方が間違っていないか
  • 文字コードの影響を受けていないか
  • -Recurse の指定が必要ではないか

🧠 注意点

Select-String は強力ですが、
大量ファイルを再帰検索すると
処理に時間がかかる場合があります。
必要な範囲に検索対象を絞るのがコツです。

📌 まとめ

  • Select-String はPowerShellの文字列検索コマンド
  • grep / findstr 相当だが、より高機能
  • ログ調査・設定確認で大活躍
  • 検索結果を後続処理に活かせる

🔎 PowerShellコマンドを探す

やりたいことからコマンドを探すこともできます。

  • ファイル内を検索したい
  • ログからエラーを探したい
  • 特定の文字列を抽出したい
  • 複数ファイルをまとめて検索したい
  • エラーや実行できない原因を調べたい
  • PowerShellでログ調査したい
  • grepの代わりを探している
Generic filters

サイト内検索(入力すると候補が出ます)

Generic filters


Generic filters

Generic filters

すべてを開く | すべてを閉じる
ページ上部へ戻る