[登録されているタグ]

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

PowerShellで1行ずつ処理する|ForEach-Objectの使い方

📝 はじめに

PowerShellで一覧データを扱っていると、
「1件ずつ処理をしたい」
「行ごとに条件を判定して別の処理を行いたい」
と感じる場面はよくあります。

そんなときに使うのが
ForEach-Object です。
この記事では、パイプラインで流れてくるデータを1行ずつ処理する基本から、
実務でよく使われる応用例までを分かりやすく解説します。

こんな場面で便利

  • 一覧の各行に対して同じ処理を行いたい
  • 条件に応じて処理内容を変えたい
  • ログ出力や一括操作を行いたい

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

  • パイプラインのデータを1件ずつ処理できる
  • 各行に対して自由な処理を書ける
  • 条件分岐や計算処理を組み込める
  • 他のコマンドと柔軟に組み合わせられる

✅ ForEach-Object でできること

ForEach-Object は、
パイプラインで流れてくるオブジェクトを
1件ずつ順番に処理するためのコマンドです。

考え方としては、
「一覧を1行ずつ取り出して処理するループ」
をパイプライン上で書けるイメージです。

🧩 基本構文

ForEach-Object {
    # 1件ごとに実行される処理
}

中括弧 { } の中が、
各行ごとに実行されます。

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

🔹 ファイル一覧を1件ずつ表示する

Get-ChildItem | ForEach-Object {
    $_.Name
}

各ファイル名が1つずつ処理されて表示されます。
名前が順番に表示されていれば問題ありません。

🔹 メッセージを付けて出力する

Get-Process | ForEach-Object {
    "Process: $($_.Name)"
}

各行の情報を加工して出力できます。

🛠 よく使われる指定例

🔹 条件に応じて処理を分ける

Get-Process | ForEach-Object {
    if ($_.CPU -gt 10) {
        "$($_.Name) : High CPU"
    }
}

条件に一致した行だけ処理されます。
エラーが出なければ正常です。

🔹 ファイル操作を行う

Get-ChildItem *.log | ForEach-Object {
    Copy-Item $_.FullName C:\backup
}

対象ファイルが1件ずつコピーされます。

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

🔹 ログを加工して別ファイルに出力

Get-Content log.txt | ForEach-Object {
    "[LOG] $_"
} | Out-File newlog.txt

1行ずつ加工された内容が出力されていればOKです。

🔹 複数のコマンドを組み合わせる

Get-Process |
Where-Object CPU -gt 5 |
ForEach-Object {
    "$($_.Name) : $($_.CPU)"
}
組み合わせ例

  • Where-Object で条件抽出してから処理
  • Select-Object で必要な列だけ使う
  • Out-File で結果を保存

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

  • $_ は現在処理中の1件を指す
  • ForEach-Object はパイプライン専用である
  • 大量データでは処理に時間がかかる
  • 表示専用に見えても処理は実行される
  • Format系コマンドと混同しやすい

🔄 cmdとの違いについて

cmdでは同様の処理を行うには
for などを使って
バッチ処理を書く必要があります。
PowerShellの ForEach-Object は、
パイプラインの流れの中で直感的に書ける点が特徴です。

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

  • パイプラインでデータが渡ってきているか
  • $_ を正しく使っているか
  • 処理内容が重すぎないか
  • Format系コマンドを前に置いていないか

🧠 注意点

ForEach-Object は非常に柔軟ですが、
複雑な処理を詰め込みすぎると読みにくくなります。
必要に応じてスクリプトブロックを分けるのがおすすめです。

📌 まとめ

  • ForEach-Object は1行ずつ処理する基本コマンド
  • 条件分岐や加工処理を自由に書ける
  • パイプラインと組み合わせることで真価を発揮する
  • 次は ForEach 文(構文)との違いを理解すると便利

🔎 PowerShellコマンドを探す

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

  • ファイルを削除したい
  • 一覧を表示したい
  • 文字列を検索したい
  • 条件で絞り込みたい
  • エラーや実行できない原因を調べたい
  • 1行ずつ処理したい
  • 一括処理を行いたい
Generic filters

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

Generic filters


Generic filters

Generic filters

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