Beim Automatisieren von Prozessen werden häufig Skripte eingesetzt. Im Umfeld von Microsoft Windows wird dazu vorzugsweise die Windows PowerShell benutzt. Wenn solch ein Skript mehrere Arbeitsschritte durchführt, kann es notwendig sein, das PowerShell Skript zu pausieren. Also für eine bestimmte Dauer anzuhalten oder auf das Drücken einer Taste zu warten.

Ein PowerShell Skript für eine bestimmte Zeit anhalten

Zunächst möchte ich auf die Möglichkeit eingehen, ein PowerShell Skript für eine frei definierbare Dauer pausieren zu lassen. Hierfür gibt es gleich zwei Befehle: sleep und timeout.

  • SLEEP
    Die Angabe dieses Befehls, gefolgt von einer Zahl, hält ein PowerShell Skript für diese Zahl in Sekunden an und führt es dann fort. Die Pause kann nicht durch Tastendruck verkürzt werden.

    Beispiel: sleep 5 hält die Verarbeitung des Skriptes für exakt 5 Sekunden an.
PowerShell Skript anhalten mit "sleep"
  • TIMEOUT
    Durch die Eingabe von timeout, gefolgt von einer Zahl, geschieht zunächst das Gleiche. Allerdings erhält der Benutzer die Option, die Pause durch Drücken einer beliebigen Taste abzubrechen und die Verarbeitung des Skriptes sofort fortzuführen.

    Beispiel: timeout 5 hält die Verarbeitung des Skriptes für maximal 5 Sekunden an.
Mit "timeout" ein PowerShell Skript pausieren

PowerShell Skript unterbrechen

Soll das Skript nicht nur für eine festgelegte Zeit angehalten werden, sondern solange unterbrochen werden, biss der Benutzer eine Taste drückt, so kann man dies mit dem Befehl PAUSE erreichen.

Durch die Eingabe von „pause“ wird das PowerShell Skript an exakt dieser Stelle unterbrochen. Die Verarbeitung läuft erst weiter, nachdem die Eingabetaste gedrückt wurde. Dadurch eignet sich dieser Befehl natürlich nicht für automatisierte PowerShell Skripte in der Aufgabenverwaltung, da diese ja im Hintergrund laufen und keine weitere Eingabe ermöglichen. Bei der manuellen Ausführung kann dieser Befehl aber durchaus sinnvoll sein.

PowerShell Skript unterbrechen und anschließend weiterführen
PowerShell Skript pausieren bis die Eingabetaste gedrückt wird.

Funktioniert auch in der Eingabeaufforderung (cmd.exe)?

Die Befehle timeout und pause funktionieren in dieser Form auch in der Windows Eingabeaufforderung. „Sleep“ hingegen funktioniert dort nicht. Damit können die erstgenannten auch in Batch-Skripten genutzt werden.

Ebenfall interessant: