スポンサーリンク

【PowerShell】Wait-Process や Start-Sleep による処理待機

記事内に広告が含まれています。

PowerShellのWait関連コマンドは、スクリプトの実行中に特定の条件が満たされるまで待機させる際に役立ちます。

主に以下のような状況で使われます。

  1. プロセスが終了するまで待機する。
  2. イベントがトリガーされるまで待機する。
  3. ファイルが作成されるまで待機する。
スポンサーリンク

基本的なコマンド例

Wait-Process

Wait-Processは、指定したプロセスが終了するまでスクリプトを一時停止させるコマンドです。

以下の例では、「notepad」プロセスが終了するまでスクリプトの実行を停止します。

Start-Process notepad
Wait-Process -Name "notepad"
Write-Host "Notepad has closed."

Wait-Processを使うことで、ユーザーがNotepadを閉じるまで次の処理を実行しないように待機できます。

Wait-Processの主なパラメータ
  • -Name
    プロセス名で待機する
  • -Id
    プロセスIDで待機する
  • -Timeout
    指定した秒数で待機する(タイムアウト時間)
Wait-Process -Name "notepad" -Timeout 10

上記の例では、Notepadが終了するか、10秒が経過したら次に進みます。

Start-Sleep

Start-Sleepは、指定された時間(秒またはミリ秒)スクリプトの実行を一時停止します。

Write-Host "Sleeping for 5 seconds..."
Start-Sleep -Seconds 5
Write-Host "Awake now!"

-Milliseconds パラメータを使って、ミリ秒単位で待機することも可能です。

Start-Sleep -Milliseconds 500

Wait-Event

Wait-Eventは、イベントがトリガーされるまで待機するコマンドです。

PowerShellのイベント駆動型プログラミングで使用されます。

Register-EngineEvent -SourceIdentifier "PowerShell.Example" -Action {
    Write-Host "Event received!"
}

Write-Host "Waiting for event..."
Wait-Event -SourceIdentifier "PowerShell.Example"
Write-Host "Event handling complete."

別のスクリプトやトリガーからNew-Eventコマンドでイベントが発生するまで、Wait-Eventはスクリプトを一時停止します。

Wait-Job

Wait-Jobは、バックグラウンドで実行中のジョブが完了するまでスクリプトを待機させるために使用されます。

$job = Start-Job -ScriptBlock {
    Start-Sleep -Seconds 10
    Write-Host "Job completed!"
}

Write-Host "Waiting for job to finish..."
Wait-Job -Job $job
Write-Host "Job finished."

バックグラウンドジョブが完了するまで待機し、完了後に次の処理に進みます。

スポンサーリンク

実際のシナリオでの使用例

バッチプロセスの管理

バックグラウンドで実行されるバッチプロセスが完了するまで他の作業を開始したくない場合、Wait-ProcessWait-Jobを使用して次のタスクを実行する前に確実にプロセスが完了するのを待つことができます。

$process = Start-Process -FilePath "C:\batch\script.bat" -PassThru
Wait-Process -Id $process.Id
Write-Host "Batch process completed."

イベント駆動の自動化

ユーザーの操作やシステムの状態に応じてスクリプトが実行される必要がある場合、Wait-Eventを使用して特定のイベントが発生するまで待機し、イベント発生時に処理を実行できます。

スポンサーリンク
Windows
著者SNS
タイトルとURLをコピーしました