もくじ
📝 はじめに
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" }
現在実行中のサービスだけを一覧表示します。
結果が表示されていれば、条件判定は正しく動いています。
- Get-Process と組み合わせて負荷調査
- Select-Object で必要な列だけ表示
- Sort-Object で並び替え
🧩 よくある勘違い・つまずきポイント
- $_ は「現在処理中の1件」を指す
- プロパティ名は正確に指定する必要がある
- 文字列比較は -eq / -like を使い分ける
- 大文字・小文字の違いで結果が変わる場合がある
- 条件式は { } の中に書く
🔄 cmdとの違いについて
cmdでは find や findstr を使って
文字列検索を行いますが、
Where-Object は
オブジェクトのプロパティを条件にできる点が大きな違いです。
⚠ エラー・うまく動かないときの確認ポイント
- プロパティ名が正しいか確認する
- 比較演算子(-eq / -like / -gt など)が適切か
- パイプラインで正しいデータを受け取っているか
- 想定しているデータ型(数値・文字列)かどうか
🧠 注意点
大量データに対して Where-Object を使うと、
処理に時間がかかる場合があります。
可能であれば、取得元コマンド側で条件指定できないかも検討すると効率的です。
📌 まとめ
- Where-Object は条件抽出の基本となるコマンド
- 一覧取得と組み合わせて使う場面が多い
- 文字列・数値の条件判定が柔軟に行える
- 次は Select-Object や Sort-Object と組み合わせると理解が深まる
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- 特定条件のデータだけ処理したい
- 大量データを整理したい
