VM Workstation als Dienst:
Pro:
-Server Funktionalität wie GSX
-Performance der VM-Workstation
-Remote-Konsole mit RDP /console
Kontra:
- keine VMware Scripting API wie GSX
Problem:
- Herunterfahren der Guest bei Stromausfall etc.
In http://www.vmaschinen.de/newsletter/vm_als_dienst.pdf hat Sven Ahnert den Weg beschrieben, VM Workstation als Dienst zu starten. Bemerkenswert ist die Eigenschaft:
Beim Abmelden läuft die VM weiter. Beim nächsten Anmelden ist der Bildschirm wieder da. Man kann auch noch an der Konsole weitere VM-Workstation (als zusätzliche Karteikarte) starten, sich abmelden und die laufen auch weiter!
Weiterhin kann mit dem RDP-Parameter %SystemRoot%\system32\mstsc.exe /console die Remote-Console (bei XP/W2K3 etc) im Netzwerk herübergeholt werden.
Die Einrichtung des Dienstes geht am bequemsten mit der nicht mehr unterstützten Freeware FireDaemon Lite. Zum Download einfach googeln nach:
FireDaemon-Lite-1_6-GA.exe -firedaemon.com
vmstart.cmd anlegen (wie von Sven Ahnert beschrieben) und als Dienst aktivieren.
Hinweis: Auf der zweiten Karteikarte von FireDaemon
-den Schalter "Interact with Desktop" aktivieren
-Show Window: normal
-Start Up Mode: automatic
-Upon Program Exit: No Action
alternativ auch in W2K3 einfach mit sc.exe:
Code: Alles auswählen
C:\>sc
BESCHREIBUNG:
SC ist ein Befehlszeilenprogramm für die Kommunikation mit dem
Dienststeuerungs-Manager und Diensten.
SYNTAX:
sc <Server> [Befehl] [Dienstname] <Option1> <Option2>...
C:\>sc create VMGUEST binpath= "vmstart.cmd" type= own type= interact
Jetzt kommt die entscheidende Frage "Wie kann man die Guests herunterfahren, wenn der Host herunterfährt?"
Antwort: Ich habe dafür keine Lösung gefunden!
Die VM läuft wegen des Dienstes auf dem Systemkonto. Ein Cmd.exe wird mit "vmrun list" keine (!) laufenden VM sehen.
Dankbarerweise laufen die Shutdown-Scripte des Host auf dem Systemkonto!
Einfach Script ablegen in C:\WINDOWS\system32\GroupPolicy\Machine\Scripts\Shutdown
und mit "Start/Ausführen.../ gpedit.msc / Computerkonfiguration / Windows-Einstellungen / Scripts" das Script zum Herunterfahren zuordnen.
Jetzt beginnen die Probleme! Nachfolgend Listing einer CMD.exe, die als Shutdown-Script zugeordnet wird.
Code: Alles auswählen
C:\>whoami
nt-autorität\system
... wie zu erwarten
jetzt ein erster Test
Code: Alles auswählen
C:\>"C:\VMware Workstation\vmrun.exe" stop E:\VMWare\winnetstandard.vmx
Powered Off, result: The operation was successful
...der Schein trügt, da beim Aufruf "vmrun.exe stop" vom Systemkonto das Gastsystem immer hart beendet und nicht heruntergefahren wird (auch wenn es vom anderen Konto prima funktioniert)
alternativ:
Code: Alles auswählen
C:\>"C:\VMware Workstation\vmrun.exe" suspend E:\VMWare\winnetstandard.vmx
Suspend, result: The operation was successful
...das hat prima funktioniert - ist aber kein Shutdown
jetzt ein Versuch mit PsShutdown v2.50 von Sysinternals:
Code: Alles auswählen
C:\>C:\util\psshutdown.exe \\GUESTVM -u User -p Password -s -t 3
Couldn't access GUESTVM:
Zugriff verweigert
... die Authentifizierung geht leider nicht vom Systemkonto aus
jetzt ein Test mit den Windows-Bordmittel shutdown.exe:
Code: Alles auswählen
C:\>shutdown
HOSTPC: Das System konnte die eingegebene Umgebungsoption nicht finden.(203)
... shutdown.exe arbeitet nicht unter einem Systemkonto. (Shutdown.exe kann auch keine Passwörter mit Parameter übergeben)
Hat noch jemand eine Idee, wie die VM heruntergefahren werden können, wenn auf dem Host keine Konsole läuft und der Host heruntergefahren wird (z.B. bei Stromausfall)?