[登録されているタグ]

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

PowerShellで条件に一致するものだけ抽出する|Where-Objectの使い方

📝 はじめに

PowerShellで一覧を取得したあとに、
「この中から条件に合うものだけを取り出したい」
「特定の名前や数値に一致する行だけを見たい」
と感じたことはありませんか?

そんなときに使うのが Where-Object です。
この記事では、取得したデータを条件で絞り込むための基本を、
初めて使う方にも分かるように解説します。

こんな場面で便利

  • ファイル一覧から特定の拡張子だけ抽出したい
  • プロセス一覧からCPU使用率が高いものを探したい
  • 条件に一致するデータだけ次の処理に渡したい

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

  • 取得したオブジェクトを条件で絞り込める
  • 文字列・数値・真偽値などを柔軟に判定できる
  • パイプラインと組み合わせて使える
  • 必要なデータだけを安全に抽出できる

✅ Where-Object でできること

Where-Object は、
パイプラインで受け取ったデータの中から
条件に一致するものだけを通過させるためのコマンドです。

「一覧を取得 → 条件で絞る」という流れを作るときに、
ほぼ必ず登場します。
フィルターとして使う、というイメージを持つと理解しやすいです。

🧩 基本構文

取得するコマンド | Where-Object { 条件 }

{ } の中に条件式を書き、
条件が $true になったものだけが結果として残ります。

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

🔹 名前で絞り込む

Get-Process | Where-Object { $_.Name -eq "notepad" }

プロセス一覧の中から、
名前が「notepad」のものだけを抽出します。
対象のプロセスだけ表示されていれば問題ありません。

🔹 拡張子でファイルを抽出する

Get-ChildItem | Where-Object { $_.Extension -eq ".txt" }

フォルダ内のファイルから、
拡張子が .txt のものだけを表示します。
条件に一致しないファイルは表示されません。

🛠 よく使われる指定例

🔹 数値条件で絞り込む

Get-Process | Where-Object { $_.CPU -gt 100 }

CPU使用時間が100を超えているプロセスだけを抽出します。

🔹 部分一致で検索する

Get-Service | Where-Object { $_.Name -like "*win*" }

サービス名に「win」を含むものを抽出します。

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

🔹 条件に一致するファイルを削除する

Get-ChildItem *.log | Where-Object { $_.Length -gt 10MB } | Remove-Item

サイズが大きいログファイルだけを削除する例です。
削除前に Remove-Item を外して確認すると安心です。

🔹 サービスの状態で絞り込む

Get-Service | Where-Object { $_.Status -eq "Running" }

現在実行中のサービスだけを一覧表示します。
結果が表示されていれば、条件判定は正しく動いています。

組み合わせ例

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

  • $_ は「現在処理中の1件」を指す
  • プロパティ名は正確に指定する必要がある
  • 文字列比較は -eq / -like を使い分ける
  • 大文字・小文字の違いで結果が変わる場合がある
  • 条件式は { } の中に書く

🔄 cmdとの違いについて

cmdでは findfindstr を使って
文字列検索を行いますが、
Where-Object
オブジェクトのプロパティを条件にできる点が大きな違いです。

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

  • プロパティ名が正しいか確認する
  • 比較演算子(-eq / -like / -gt など)が適切か
  • パイプラインで正しいデータを受け取っているか
  • 想定しているデータ型(数値・文字列)かどうか

🧠 注意点

大量データに対して Where-Object を使うと、
処理に時間がかかる場合があります。
可能であれば、取得元コマンド側で条件指定できないかも検討すると効率的です。

📌 まとめ

  • Where-Object は条件抽出の基本となるコマンド
  • 一覧取得と組み合わせて使う場面が多い
  • 文字列・数値の条件判定が柔軟に行える
  • 次は Select-ObjectSort-Object と組み合わせると理解が深まる

🔎 PowerShellコマンドを探す

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

  • ファイルを削除したい
  • 一覧を表示したい
  • 文字列を検索したい
  • 条件で絞り込みたい
  • エラーや実行できない原因を調べたい
  • 特定条件のデータだけ処理したい
  • 大量データを整理したい
Generic filters

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

Generic filters


Generic filters

Generic filters

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