PowerShellのStart-Sleepコマンドレットまたはsleep
エイリアスは、単一の目的を持つシンプルなコマンドレットです。スクリプトを一時停止させることです。PowerShellコンソールで実行される場合、コンソールまたはPowerShell ISEで実行されるスクリプトは、必要な時間(秒またはミリ秒)が経過するまで、単にスクリプトまたはモジュールを一時停止させます。
このコマンドレットはシンプルですが、いくつかの異なる方法で適用でき、スクリプタがよりわかりやすいスクリプトを作成できるようにします。
Start-Sleepの使用
Start-Sleepコマンドレットの使用は非常に簡単です。なぜなら、2つのパラメータしかないからです!たとえば、他の環境プロセスが実行されるのを待っているためにスクリプトを一時停止させたいとします。そのプロセスには約10秒かかり、外部イベントが完了する前にスクリプトが実行されないようにする必要があります。
スクリプトを10秒間一時停止させるには、Start-Sleep -Second 10
を使用します。もっと詳しくやりたい場合は、ミリ秒単位で時間を指定することもできます。Start-Sleep -Milliseconds 10000.
例のコンテキスト
このStart-Sleepコマンドレットの最も一般的な使用法の1つは、while
ループの内部です。while
ループは、何か別のことが起こっている間にコードを実行するPowerShellの構造です。while
ループの最良の使用法の1つは、何か他のことが起こるのを待つことです。単にプロセスがどれくらいかかるかを推測するのではなく、このコマンドレットを直接実行します。
たとえば、フォルダにファイルが表示されるのを待つ必要があるかもしれません。おそらくそのファイルは他のソフトウェアによってそこにドロップされます。ファイルがフォルダにあると、それに対していくつかのコードを実行する必要があります。この例は、while
ループとStart-Sleep
の優れた使用例です。
以下の例では、私のコードはC:\File.txt
ファイルが表示されるのを待っています。これがスクリプト内にあれば、このイベントが発生するまでスクリプトが一時停止します。技術的には、これを行うためにはStart-Sleep
は必要ありませんが、使用しない場合、このコードはコンピュータを無効にする可能性があります。このファイルを継続的に確認する速度はPowerShellに依存します!
このファイルを毎回0.0455ミリ秒ごとに確認する必要はありません。その代わりに、そのチェックを遅らせ、テストを5秒ごとに実行する必要があります。Whileループを遅らせるのはStart-Sleep
コマンドの優れた使用例です。
このコマンドレットを使用して進捗バーを表示する例については、これをチェックしてください。