Starten Sie den Computer neu und halten Sie das Skript gedrückt

4

Ich führe ein Powershell-Skript aus, das einen Neustart in der Mitte des Skripts erfordert. Nach dem Neustart führt das Skript einige Befehle aus (die vor dem Neustart nicht ausgeführt werden können!). Ich starte den Computer mit Restart-Computer neu und der Neustart startet sofort. Die ersten Befehle nach dem Neustart werden jedoch ausgeführt an!

Der Neustart wird also gestartet, aber das Skript wird noch ausgeführt (für einige Sekunden ..). Gibt es eine Möglichkeit, das Skript zu halten, damit es nicht fortgesetzt wird, während der Computer heruntergefahren wird?

Restart-Computer -Force
"This is some content" >> C:\Users\Me\Desktop\Log.txt

Im obigen Beispiel wird der Computer neu gestartet, aber die Textdatei (mit "this is some content") wird ebenfalls erstellt. Ich möchte den Computer neu starten, ohne dass die Textdatei erstellt wird. Also ohne das Skript fortzusetzen. Jetzt mache ich das mit Start-Sleep , aber es muss einen besseren Weg geben.

Vielen Dank.

Jente
quelle
3
Das Skript wird nach dem Neustart sowieso nicht neu gestartet, es sei denn, Sie führen einen Neustart durch. Also nimm einfach den ganzen Code nach dem Neustart raus. Wenn Sie das Skript veranlassen, das Skript nach dem Neustart neu zu starten, sollten Sie es mit einem Befehlszeilenparameter neu starten, der angibt, dass es sich um einen Neustart nach dem Neustart handelt, und Code basierend auf dem Vorhandensein dieses Parameters ausführen.
EBGreen
1
Sie können wie oben vorgeschlagen vorgehen oder das Skript beim Neustart beenden und ein zweites Skript erstellen, das nach dem Neustart automatisch ausgeführt wird. HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run zum Beispiel
Cybernard
2
@Jente Sie haben eine Möglichkeit, Ihr Skript neu zu starten oder es nach dem Neustart fortzusetzen? In beiden Fällen ist es möglicherweise besser, die beiden Elemente in verschiedene Dateien / Skripte zu unterteilen.
Durchbruch
2
Ja, auf jeden Fall in zwei separate Dateien aufteilen oder den Pre-Reboot-Code und den Post-Reboot-Code in Funktionen einfügen und dann die richtige Funktion basierend auf einem Befehlszeilenparameter aufrufen.
EBGreen
1
Ich weiß nicht , ob es muss sein , zwei separate Dateien, aber die beiden Verhaltensweisen des Skripts sollten durch einen Schalter oder Parameter getrennt werden. Ein -RunAfterRebootSchalter mit einer Bedingung im Skript selbst wäre ausreichend.
Bacon Bits