PowerShell Start-Sleep コマンドレットまたは sleep
のエイリアスは、単一の目的を持つシンプルなコマンドレットです; スクリプトを一時停止することです。 PowerShell コンソール、コンソールで実行されるスクリプト、または PowerShell ISE で実行すると、このコマンドレットは、秒またはミリ秒単位の必要な時間が経過するまで PowerShell セッションのスクリプトまたはモジュールの実行を一時的に停止します。
このコマンドレットはシンプルですが、いくつかの異なる方法で適用することができ、私たちスクリプターがよく書かれたスクリプトを作成できるようにします。
Start-Sleep Usage
Start-Sleep コマンドレットの使用は非常に簡単で、結局、パラメーターは 2 つだけです!このコマンドレットの使用は非常に簡単です。 例えば、他の環境プロセスの実行を待っているため、スクリプトを一時停止したいとします。 そのプロセスは約 10 秒かかり、その外部イベントが完了する前にスクリプトが実行され続けないようにする必要があります。
10 秒間スクリプトを一時停止するには、Start-Sleep -Second 10
を使用します。 5548>
コンテキスト例
この Start-Sleep コマンドレットの最も一般的な使用方法の 1 つは、while
ループの内部です。 while
ループは、他の何かが起こっている間にコードを実行する PowerShell の構成です。 while
ループの最も良い使い方の 1 つは、何か他のことが起こるのを待つことです。 プロセスがどのくらい時間がかかるかを推測して、このコマンドレットを直接実行するのではなく、
たとえば、あるファイルがフォルダーに表示されるのを待つ必要があるかもしれません。 そのファイルは、他のソフトウェアによってそこにドロップされるかもしれません。 ファイルがフォルダーに表示されたら、そのファイルに対していくつかのコードを実行する必要があります。 この例は、while
ループと Start-Sleep
.
を使用する優れた例です。以下の例では、私のコードは C:\File.txt
ファイルが表示されるのを待機しています。 これがスクリプトの中にあれば、このイベントが発生するまでスクリプトを一時停止することになります。 技術的には、Start-Sleep
は必要ありませんが、もし使用しなければ、このコードはコンピュータを不具にする可能性があります。 このファイルを継続的にチェックする速度は PowerShell に任されています!
このファイルを 0.0455ms ごとにチェックする必要はないでしょう。 その代わりに、そのチェックを遅くして、5 秒ごとにのみテストを実行する必要があります。 while ループを遅くすることは、Start-Sleep
コマンドの優れた使用方法です。
$filePath = 'C:\File.txt'while (-not (Test-Path -Path $filePath)) { ## Wait a specific interval Start-Sleep -Seconds 5}
このコマンドレットを素晴らしいプログレス バーと共に使用する例については、こちらを参照してください。