【PowerShell】待機・一時停止(Pause)のやり方まとめ|Start-Sleep / Read-Host の使い分け

PowerShell でスクリプトを書いていると、「処理を一時停止したい」「一定時間だけ待機したい」といった場面は頻繁にあります。

本記事では、PowerShell における代表的な待機・停止(Pause 相当)の方法を整理し、実務で迷わず使い分けられるように解説します。


スポンサーリンク

1. PowerShell の待機・停止方法は大きく4種類

PowerShell でよく使われる待機処理は、目的別に次の4つに分類できます。

  • 時間で待機する(Sleep)
  • Enter キー入力まで停止する(Pause 相当)
  • 任意のキー入力を待つ
  • 条件が満たされるまで待機する(ループ + Sleep)

以降、それぞれを順番に見ていきます。


スポンサーリンク

2. 一定時間だけ待機したい:Start-Sleep

最も基本となる待機方法が Start-Sleep です。指定した時間だけ処理を停止できます。

秒で指定する

Start-Sleep -Seconds 5

5 秒間待機します。

ミリ秒で指定する

Start-Sleep -Milliseconds 500

0.5 秒(500 ミリ秒)待機します。

Start-Sleep は、バッチファイルの timeout コマンドに相当するものとして覚えておくと便利です。


スポンサーリンク

3. Enter キーを押すまで停止したい:Read-Host(Pause 相当)

PowerShell には、バッチファイルの pause コマンドに直接対応する命令はありません。
その代わり、Read-Host を使うことで同等の動作を実現できます。

Read-Host "続行するには Enter キーを押してください"

ユーザーが Enter キーを押すまで、処理はそこで停止します。

よくある用途

  • スクリプトの途中でユーザー確認を入れたい
  • スクリプト終了後にウィンドウがすぐ閉じるのを防ぎたい
Read-Host "終了するには Enter を押してください"

スポンサーリンク

4. 任意のキー入力を待ちたい:Console.ReadKey()

Enter キー以外も受け付けたい場合は、.NET の ReadKey() メソッドを使用します。

Write-Host "何かキーを押してください..."
[void][System.Console]::ReadKey($true)

特徴

  • Enter を押さなくても 1 キー入力で処理を再開できる
  • 押されたキーを取得することも可能

ゲーム風の処理や、ユーザー操作を細かく制御したい場合に向いています。


スポンサーリンク

5. 条件が満たされるまで待機したい:while + Start-Sleep

実務の自動化スクリプトで特に重要なのが、「条件が整うまで待機する」パターンです。

例:サービスが停止するまで待機する

while ((Get-Service -Name Spooler).Status -ne "Stopped") {
    Write-Host "停止を待っています..."
    Start-Sleep -Seconds 1
}

Write-Host "停止しました"

ポイント

  • サービスの状態を定期的にチェック
  • Start-Sleep を入れることで無限ループによる高負荷を防止
  • 状態監視・待機処理の基本パターン

スポンサーリンク

6. 目的別:おすすめコマンド早見表

やりたいこと使用するコマンド
一定時間待機したいStart-Sleep
Enter キーで停止したいRead-Host
任意のキー入力を待ちたいConsole.ReadKey()
条件が満たされるまで待ちたいwhile + Start-Sleep

スポンサーリンク

7. まとめ:PowerShell の待機処理は用途で使い分ける

PowerShell では、目的に応じて待機方法を正しく使い分けることが重要です。

  • 時間で止めたいStart-Sleep
  • ユーザー操作を待ちたいRead-Host / ReadKey()
  • 条件が整うまで待ちたいwhile + Start-Sleep

特に自動化スクリプトでは「条件待ち」が頻出するため、この考え方を押さえておくと実務で大きく役立ちます。

コメント

タイトルとURLをコピーしました