Ausführen eines Batch-Skripts beim Herunterfahren / Abmelden / Neustarten von Windows 10

1803
Henrik Nielsen

Zunächst einmal, sorry. Dies ist eine erneute Veröffentlichung meiner ursprünglichen Frage zu "stackoverflow", aber ich habe versucht, Moderatoren dazu zu bewegen, sie zu verschieben, da die Frage eher ein allgemeines Windows-Verhaltensproblem ist als ein eigentliches Codierungsproblem, jedoch erfolglos.

Aber zum Geschäft.

Ich versuche, ein BAT-Skript auszuführen, wenn der Computer (mit Win10) einen Befehl zum Herunterfahren, Abmelden oder Neustarten erhält. Da ich manchmal virtuelle Maschinen (in VirtualBox) ausführte, ist mein Skript darauf ausgelegt, nach allen laufenden VMs zu suchen, sie anzuhalten und dann zu überprüfen, dass keine VM-Schnittstellen aktiv sind (da dies dazu führen kann, dass der Pausenstatus beschädigt wird). erfordert einen erneuten Neustart der VM). Das Skript wird getestet und funktioniert wie vorgesehen.

Mein Problem ist, dass es automatisch läuft.

Ich habe versucht, das Skript zu GP unter Benutzer "Konfig | Windows-Einstellungen | Skripts (Anmelden / Abmelden) | Abmelden" hinzuzufügen, wie in den vorherigen Beiträgen gefunden. Dies schien die Ausführung des Skripts zu starten, erlaubte jedoch nicht, dass es ordnungsgemäß beendet wurde, bevor das eigentliche Herunterfahren ausgeführt wurde.

Ich suchte also weiter und änderte schließlich einen anderen GP-Wert von Interesse. Ich habe unter "Benutzerkonfiguration | Administrative Vorlagen | System | Skripts" die Option "Anweisungen in Abmeldeskripts während der Ausführung anzeigen" aktiviert. Dies bewirkt, dass Windows die Eingabeaufforderung anzeigt und auf das Schließen wartet, bevor das Herunterfahren fortgesetzt wird.

Aber ich habe immer noch Probleme. Mein aktuelles Problem ist, dass all dies immer noch zu spät im Herunterfahren geschieht. Wenn Sie im Startmenü auf die Schaltfläche zum Herunterfahren klicken, wird zunächst ein Popup-Fenster angezeigt, in dem Sie darüber informiert werden, dass noch ein laufendes Programm (die VMs) ausgeführt wird. Außerdem haben Sie die Möglichkeit, sie zu stoppen. Erst danach (das zwingt meine VMs dazu, den nicht so hübschen Weg herunterzufahren), führt Windows tatsächlich mein Skript aus (das die VMs in einem richtigen Zustand speichern sollte).

Meine Frage ist daher, ob es eine Möglichkeit gibt, vorzugsweise unter Verwendung von GP und / oder Task Scheduler, dass ich mein BAT-Skript von Windows ausführen lassen kann (und darauf warten kann, dass es beendet wird), wenn ein Herunterfahren / Abmelden / Neustarten ausgelöst wird, jedoch vor dem Die Aufforderung "Schließen erzwingen" wird angezeigt.

Beste Grüße Henrik V. Nielsen

1
Welchen VM-Dienst verwenden Sie? Ich hatte das gleiche Problem bei der Verwendung von Oracle VM, und obwohl es unmöglich ist, das Skript beim Herunterfahren zu lösen, wurde ein Programm namens Headless-Tray verwendet, mit dem versucht werden soll, den Zustand der VM beim Herunterfahren zu speichern und das Herunterfahren des Fensters zu verzögern helfen. Bei Windows-Updates musste ich die Server neu konfigurieren, um den Neustart zu verzögern, um zu prüfen, ob ein Neustart geplant ist. Dann das Skript ausführen und den Neustart selbst ausführen. LPChip vor 6 Jahren 1
Hat die virtuelle Box keine Option zum automatischen Speichern von VMs beim Herunterfahren des Systems? Wie LPChip sagte, können Sie beim Herunterfahren nicht zum richtigen Zeitpunkt ein Shutdown-Skript ausführen, um das zu erreichen, was Sie versuchen. Twisty Impersonator vor 6 Jahren 0
LPChip: Dies ist auch ein Problem mit der VirtualBox. Ich würde gerne mehr über Ihre Lösung erfahren. Twisty: Nicht das ich gefunden habe. Ich weiß, dass jemand so etwas weiß, ich bin ganz Ohr. Henrik Nielsen vor 6 Jahren 0

1 Antwort auf die Frage

0
Alz

Notwendigkeit ist die Mutter der Erfindung. Nicht sicher, ob dies in Ihrem VM-Fall zutrifft, aber:

Meine Windows 10-Antwort mit gpedit.msc und dem Einrichten von Abmeldeskripts bestand darin, eine separate ping-cmd-Datei mit "ping -n 5 127.0.0.1" nach der kritischen zu erstellen. Dadurch konnte mein "kritisches" Abmeldeskript einwandfrei funktionieren.

Hallo Alz, ich bin mir nicht sicher, ob ich verstehe, wohin Sie mit diesem gehen? Wollen Sie damit sagen, dass Sie in gpedit.msc (logoff) m zwei Skripte hinzufügen, eines, das Sie ausführen möchten, und eines, das nur den lokalen Host pingt? Wenn oben nicht richtig ist, bitte ausführlich. Wenn oben stimmt, bin ich nicht sicher, ob es für mich funktioniert. Wie ich geschrieben habe, habe ich keine Probleme damit, das Skript nicht vollständig auszuführen. Das Skript wird jedoch zu spät in der Herunterfahren-Sequenz ausgeführt (nachdem das Schließen des geöffneten Programms erzwungen wurde), und da liegt das Problem. Henrik Nielsen vor 5 Jahren 0
Entschuldigung für die späte Antwort. Ich antwortete gegen "Dies schien die Ausführung des Skripts zu starten, erlaubte jedoch nicht, dass es ordnungsgemäß beendet wurde, bevor das eigentliche Herunterfahren ausgeführt wurde." Ja, ich habe zwei separate Skripte in gpedit.msc unter User Configuration / Windows Settings / Scripts. Einer führt den Befehl zum Herunterfahren aus, und der zweite führt den Ping aus, der den Herunterfahren gerade so lange bremst, dass mein erstes Skript erfolgreich abgeschlossen werden kann. Eine Sache zu beachten. Ich verwende .cmd-Erweiterungen und keine .bat-Erweiterungen, und die Erweiterung kann aufgrund des aufgerufenen Skript-Interpreters einen Unterschied machen. Alz vor 5 Jahren 0