Der PowerShell-Befehl Start-Sleep oder das Alias sleep
ist ein einfacher Befehl mit einem einzigen Zweck: Ein Skript zu pausieren. Wenn er in der PowerShell-Konsole, einem Skript, das von der Konsole ausgeführt wird, oder in der PowerShell ISE ausgeführt wird, pausiert der Befehl lediglich ein Skript oder ein Modul in der PowerShell-Sitzung, bis die erforderliche Zeit in Sekunden oder Millisekunden verstrichen ist.
Dieser Befehl ist einfach, aber kann auf verschiedene Weise angewendet werden, um uns Skriptern zu helfen, gut geschriebene Skripte zu erstellen.
Verwendung von Start-Sleep
Die Verwendung des Start-Sleep-Befehls ist äußerst einfach, schließlich hat er nur zwei Parameter! Angenommen, ich möchte mein Skript pausieren, weil ich auf einen anderen Umgebungsprozess warte. Dieser Prozess dauert ungefähr 10 Sekunden, und ich muss sicherstellen, dass mein Skript nicht weiterläuft, bevor dieses externe Ereignis abgeschlossen ist.
Um das Skript für 10 Sekunden anzuhalten, würde ich einfach Start-Sleep -Second 10
verwenden. Wenn ich es genau nehmen möchte, könnte ich auch die Zeit in Millisekunden angeben, z. B. Start-Sleep -Milliseconds 10000.
Beispielkontext
Eine der häufigsten Verwendungen dieses Start-Sleep-Befehls ist innerhalb einer while
-Schleife. Eine while
-Schleife ist eine Konstruktion in PowerShell, die Code ausführt, während etwas anderes passiert. Eine der besten Verwendungen einer while
-Schleife besteht darin, auf etwas anderes zu warten. Anstatt einfach zu raten, wie lange ein Prozess dauern wird, und diesen Befehl direkt auszuführen.
Zum Beispiel müssen Sie möglicherweise auf das Auftauchen einer Datei in einem Ordner warten. Vielleicht wird diese Datei dort von einer anderen Software abgelegt. Sobald die Datei im Ordner ist, müssen Sie einige Codes dagegen ausführen. Dieses Beispiel ist ein hervorragendes Beispiel für die Verwendung einer \code{while}-Schleife und von \code{Start-Sleep}.
Im folgenden Beispiel wartet mein Code darauf, dass die Datei \code{C:\File.txt} angezeigt wird. Wenn dies in einem Skript wäre, würde das Skript pausieren, bis dieses Ereignis eintritt. Technisch gesehen brauchen wir \code{Start-Sleep} nicht, um dies zu tun, aber wenn es nicht verwendet wird, könnte dieser Code Ihren Computer lahmlegen. Die Geschwindigkeit, mit der er ständig nach dieser Datei suchen könnte, läge bei PowerShell!
Wir müssen diese Datei nicht alle 0,0455 ms überprüfen. Stattdessen sollten wir diese Überprüfung verlangsamen und den Test nur alle fünf Sekunden durchführen. Eine Verlangsamung einer \code{while}-Schleife ist eine hervorragende Verwendung des Befehls \code{Start-Sleep}.
Ein Beispiel für die Verwendung dieses Cmdlets mit einer schönen Fortschrittsanzeige finden Sie hier.