公開:
最終更新:
PowerShell Job系コマンド チートシート
目次
- ジョブの立ち上げ・確認・削除
- 基本書式と操作フロー
- 陥りがちな問題とその解法
- 構文パターン・ワンライナー例
- 高速化・一括制御TIPS
- 相対パス引き継ぎ
- ジョブ成功後に自動削除
- Start-Jobの主なパラメータまとめ
- 現場向けワンポイント
- リファレンス
サクッと使えるジョブ制御・ノウハウまとめ
ジョブの立ち上げ・確認・削除
基本書式と操作フロー
# ジョブ開始
$job = Start-Job { コマンド... }
# ジョブ一覧
Get-Job
# ジョブ状態を絞り込み
Get-Job -State Running
# 完了・履歴取得
Receive-Job -Id $job.Id
# 結果と同時に削除
Receive-Job -Id $job.Id -Wait -AutoRemoveJob
# ジョブ削除
Remove-Job -Id $job.Id
# すべて削除
Get-Job | Remove-Job
陥りがちな問題とその解法
- 相対パスが使えない
 → ScriptBlock先頭でSet-Location、または絶対パス渡しで回避
- ジョブがゴミとして残る
 →-AutoRemoveJob/Remove-Jobで明示削除
- 変数参照問題
 →$using:構文を使い外側変数をScriptBlockへ受け渡し
- ジョブのカレントディレクトリは$HOME等にリセットされる
 →$cwd = $pwd.Path等で保存&渡す
構文パターン・ワンライナー例
# 独立した複数ジョブを一気に起動(全て合流不要)
$cwd = $pwd.Path
1..4 | ForEach-Object {
  $i = "{0:00}" -f $_
  Start-Job { Set-Location -Path $using:cwd; .\filter_csv.exe .\BIP1\$using:i.csv .\BIP1\$using:i`_f.csv }
}
# 実行後すべてのJobを削除
Get-Job | Remove-Job
- $using:変数名で呼び出し元変数を安全に渡す
- Set-Locationで起動時ディレクトリを指定
高速化・一括制御TIPS
- 合流不要ならReceive-JobやWait-Jobは省略
- 一括削除は Get-Job | Remove-Job
- 使い捨て実行+自動削除は
Start-Job { ... } | Wait-Job; Get-Job | Receive-Job -AutoRemoveJob
相対パス引き継ぎ
- 
呼び出し元のパスを一度取得 $cwd = $pwd.Path
- 
ScriptBlockで明示セット Start-Job { Set-Location -Path $using:cwd; コマンド ... }
ジョブ成功後に自動削除
$job = Start-Job { ... }
Wait-Job -Id $job.Id
Receive-Job -Id $job.Id -AutoRemoveJob
または
Receive-Job -Id $job.Id -Wait -AutoRemoveJob
Start-Jobの主なパラメータまとめ
| パラメータ | 用途 | 
|---|---|
| -ScriptBlock | 実行内容(必須) | 
| -InitializationScript | 先に実行する初期化処理 | 
| -Name | ジョブ名 | 
| -Credential | ユーザー指定 | 
| -ArgumentList | 引数を配列で渡す | 
| -FilePath | スクリプトファイル指定 | 
| -InputObject | $input自動変数で受け取る | 
| -Authentication | 認証方式指定(リモート用) | 
| -AutoRemoveJob | 結果取得後自動削除 | 
| -RunAs32 | 32bitプロセスとして実行 | 
現場向けワンポイント
- ジョブはデフォルトで $HOME下開始、pwd維持にはSet-Location必須
- コマンドの中で変数値やパスを柔軟に扱う場合は$using:と絶対パス化が安全
- コマンド終了の有無や状態を意識してジョブクリーンアップを徹底
リファレンス
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/start-job?view=powershell-7.5 https://tex2e.github.io/blog/powershell/background-job