もくじ
📝 はじめに
Start-Job でバックグラウンド処理を実行したあと、
「処理は終わったけど、結果はどこで見ればいいの?」
「ジョブが完了しているのに、何も表示されない」
と戸惑ったことはありませんか?
そんなときに使うのが、
ジョブの実行結果を受け取るための
Receive-Job です。
この記事では、ジョブ結果の受け取り方を中心に、
よくあるつまずきポイントも含めて解説します。
- バックグラウンド処理の結果を確認したい
- 複数ジョブの結果をまとめて取得したい
- スクリプトで非同期処理の結果を扱いたい
✅ このコマンドでできること(要点)
- バックグラウンドジョブの実行結果を取得できる
- ジョブIDや名前を指定して結果を受け取れる
- 標準出力・エラー情報を確認できる
- 後続処理に結果を渡せる
✅ Receive-Job でできること
Receive-Job は、
Start-Job で実行した処理の
出力結果を取得するためのコマンドです。
ジョブは完了しても自動で結果を表示しません。
そのため、「結果を受け取る」操作として
Receive-Job を明示的に実行する必要があります。
「実行」と「結果取得」が分かれている点が、ジョブの特徴です。
🧩 基本構文
Receive-Job -Id ジョブID
ジョブIDまたは名前を指定して、結果を受け取ります。
事前に Get-Job でIDを確認するのが一般的です。
▶ 基本的な使い方(まずこれだけ)
🔹 ジョブ結果を受け取る
Receive-Job -Id 1
ジョブが完了していれば、実行結果が表示されます。
何かしらの出力が表示されていれば、正常に受信できています。
🔹 すべてのジョブ結果を取得する
Get-Job | Receive-Job
存在するすべてのジョブから結果を受け取ります。
複数ジョブをまとめて処理したい場合に便利です。
🛠 よく使われる指定例
🔹 ジョブ名で結果を取得する
Receive-Job -Name TestJob
ジョブに名前を付けている場合は、
名前指定で結果を受け取れます。
🔹 結果を変数に格納する
$result = Receive-Job -Id 1
取得した結果を変数に入れることで、
後続の処理に利用できます。
💼 実務でよく使う使用例(応用)
🔹 完了したジョブだけ結果を取得する
Get-Job | Where-Object State -eq 'Completed' | Receive-Job
完了済みのジョブだけを対象に結果を受け取ります。
実行中のジョブが混ざらないため、安全に扱えます。
🔹 結果取得後にジョブを削除する
Get-Job | Receive-Job
Get-Job | Remove-Job
- Start-Job で処理開始
- Get-Job で状態確認
- Remove-Job で後片付け
🧩 よくある勘違い・つまずきポイント
- ジョブが完了しても自動では結果が表示されない
- Receive-Job を複数回実行すると結果が空になることがある
- 実行中(Running)のジョブは結果を受け取れない
- ジョブを削除すると結果も失われる
🔄 cmdとの違いについて
cmdには、
PowerShellのジョブ機能や
Receive-Job に相当する仕組みはありません。
PowerShellでは、
非同期処理と結果取得を分離して管理できる点が特徴です。
⚠ エラー・うまく動かないときの確認ポイント
- 対象のジョブが存在しているか
- ジョブの State が Completed になっているか
- すでに Receive-Job を実行していないか
- PowerShellを再起動していないか
🧠 注意点
Receive-Job は、基本的に一度きりの結果取得
📌 まとめ
- Receive-Job はジョブ結果取得のための専用コマンド
- Start-Job とセットで使うのが前提
- 結果は自動表示されない点に注意
- 次は Remove-Job でジョブ管理を完結させると便利
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探せます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- ジョブの結果を確認したい
- バックグラウンド処理を扱いたい
