Führen Sie eine Batchdatei beim Herunterfahren von Windows 7 aus, bevor Sie Programme schließen (vorzugsweise beim Drücken der Netztaste).

8

Ich habe eine Windows 7 Box mit mehreren VMWare Player Maschinen, die beim Booten gestartet werden. Ich verwende WMWare VIX und eine Batch-Datei, um die virtuellen Maschinen wie folgt herunterzufahren:

%Vor%

Ich möchte diese Befehle ausführen, wenn der Host-Computer heruntergefahren wird, so dass ich nicht jede VM einzeln herunterfahren muss. Nach dem Deployment werden die Shutdowns wahrscheinlich mit einem kurzen Druck auf die ACPI-Einschalttaste und nicht über das Startmenü gestartet. Wege die ich ausprobiert habe die nicht funktionieren (zumindest nicht gut genug):

  1. Gruppenrichtlinien - Der naheliegendste Weg, aber in Windows 7 ist die Option, Asynchron-Skripte 'asynchron' auszuführen, weg Das Ergebnis ist, dass Windows first alle offenen Fenster zum Schließen anweist, die VMs antworten, dass sie verwendet werden, und Sie erhalten den Dialog "Schließen erzwingen". Nur nachdem VMWare Player und alles andere geschlossen ist, werden die Skripts ausgeführt, die nicht verwendet werden.
    Du könntest denken, dass sich das ändern könnte, aber ich denke, ich erinnere mich daran, eine offizielle MS-Notiz in der Form "nein, Entschuldigung" zu sehen. Der Link kann jedoch nicht gefunden werden.

  2. Verwenden Sie eine Batchdatei, die alle VMs schließt und dann den Host als Desktopverknüpfung anstelle der üblichen Schaltfläche zum Herunterfahren herunterfährt. - Works, und das ist, was ich gerade benutze, während ich mich entwickle.
    Die Verwendung des ACPI-Netzschalters führt jedoch zu einem normalen Herunterfahren mit dem gleichen Ergebnis wie zuvor, und es wäre besser, wenn der Endbenutzer, der den Computer täglich ein- und ausschaltet, keinen Monitor und keine Maus verwenden muss br> Was ich im Moment suche, ist eine Möglichkeit, die Aktion zu ändern, die beim Drücken der physischen Power-Taste aufgerufen wird. Windows erlaubt es Ihnen, zwischen verschiedenen Aktionen wie Ruhezustand, Ruhezustand, Neustart usw. zu wählen, aber könnten Sie das in 'Run this .bat' ändern? Oder vielleicht das Verhalten des Shutdown-Befehls insgesamt ändern?

  3. Programmatisch die Nachricht zum Herunterfahren abfangen, das Herunterfahren abbrechen, eine Batch-Datei ausführen und das Herunterfahren erneut initiieren. Es gab einige Diskussionen über das Abfangen von Abschaltung z.B. hier , hier und hier , aber ich bin immer noch zu viel von einem n00b in allen Sprachen außer vielleicht Ruby oder Java, um wirklich zu verstehen, ob und wie es in diesem Fall gemacht werden könnte. Wenn jemand klären kann, wie er diese Arbeit tatsächlich erledigen kann (ohne auf dem Bildschirm "Schließen der Macht" stecken zu bleiben), möchte ich gerne jede Sprache ausprobieren, die Sie anbieten.

lime 24.01.2011, 14:12
quelle

3 Antworten

3

Okay, also habe ich eine Lösung gefunden, die für mich funktioniert hat; ein Tool namens AutoHotkey_L und ein Skript, das nach diesen threads in den AutoHotkey-Foren.

Dies ist der Code, den ich verwende, und ich empfehle Ihnen, AutoHotkey-Befehle in der Dokumentation nachzulesen. Ich optimiere den Code, während ich lerne, was er eigentlich macht, aber im Moment funktioniert das. :)

%Vor%

Also im Moment unterscheidet es nur zwischen Abmelden und Herunterfahren, aber dieser Beitrag hat ein einfaches GUI in HTML, mit der der Benutzer auswählen kann, ob er neu starten möchte, Ruhezustand usw..

In meinem Fall ist es in Ordnung, das Herunterfahren zu unterbrechen und die Batch-Datei auszuführen, unabhängig davon, ob VMware läuft oder nicht, aber Sie können dafür eine Bedingung festlegen:

%Vor%

Ich habe bereits Probleme mit diesem Skript bekommen, zB wenn der Host so verlangsamt ist (Memory Leakage), dass der Bildschirm "Force shudown" nicht rechtzeitig erscheint, damit das Skript es schließt. Und es würde wahrscheinlich davon profitieren, die Anzahl der Versuche im Auge zu behalten, so dass es zwangsweise herunterfahren könnte, wenn der erste Versuch fehlschlägt.

Gut genug für jetzt zumindest. Und vielleicht brauche ich gar keine Virtualisierung für mein Projekt, aber hoffentlich kann es jemand anderem helfen. Alternative Lösungen sind immer noch sehr willkommen.

    
lime 09.03.2011, 14:56
quelle
1

Ich habe diese Lösung für das gleiche Problem gefunden: Ссылка

Der Trick, um über das "Schließen der Kraft" hinauszukommen, besteht darin, zuerst alle VMs anzuhalten / anzuhalten und dann das Herunterfahren im selben Skript erneut auszuführen. Es scheint für mich zu funktionieren.

    
Wayne H 02.11.2011 09:04
quelle
0

Workstation hat eine Vorliebe dafür, "VMs nach dem Schließen der Workstation laufen zu lassen". Hat VMware Player die gleiche Option?

So funktioniert das: Aktivieren Sie die obige Einstellung. Das Fenster wird geschlossen und die VMs werden ausgeführt. Der Shutdown-Vorgang kann dann von # 1 zu Ihrem Skript fortgesetzt werden, wodurch die VMs vor dem Beenden heruntergefahren / angehalten werden sollten.

Ich habe selbst keine Player-VMs, daher kann ich das nicht testen, aber ich hoffe, es hilft.

    
Evan Powell 01.02.2011 17:18
quelle