Virtuelle Maschine im Virtual Server 2005 von der Kommandozeile starten

Hyper-V ist die Technologie, wenn es um Virtualisierungen auf Microsoft Windows Server 2008-Systemen geht. Doch auch auf Server 2003 kann man virtualisieren: mit Microsoft Virtual Server 2005 (kostenloser Download hier).

Die Konfiguration ist ähnlich wie auch bei Hyper-V, allerdings ist der Server-Manager auf einer Web-Oberfläche zu Hause. Nun hatte ich das Problem, dass, nachdem ich die virtuelle Maschine angelegt hatte, der Browser (Internet Explorer 8 ) beim Klick auf den Link zum Starten der virtuellen Maschine einen Java-Script Error meldete. Kurzum, die Maschine ließ sich nicht starten.

Virtual Server hat zwar keine direkten Befehle zum Starten, bringt aber ein API mit, derer man sich bedienen kann.

Zunächst legt man in einem Script folgende Initialisierung an:

var objVS = new ActiveXObject("VirtualServer.Application", strServer);
var objVM = objVS.FindVirtualMachine(strVMName);
var objTask;

Nachdem das Objekt angelegt wurde, kann man die Maschine mit folgendem Befehl starten:

objTask = objVM.StartUp();
WaitForTask(objTask);

Hier der Code für ein komplettes Script:

//
// Remote Start/Stop einer Virtuellen Maschine
//
var CRLF = "rn";
var VM_STATE_OFF = 1;
var VM_STATE_RUNNING = 5;

var strServer = "VS Server"
var strVMName = "Gast VM Name"

var objVS = new ActiveXObject("VirtualServer.Application", strServer);
var objVM = objVS.FindVirtualMachine(strVMName);
var objTask;

//
// Wenn die virtuelle Maschine gefunden wurde
//
if ( objVM != null )
{
    WScript.Echo("Virtuelle Maschine mit folgendem Namen gefunden: " +
      strVMName);

    //
    // Wenn die VM läuft, dann auf einen sauberen Shutdown warten
    //
    // Das setzt voraus, dass die VM Additions auf dem Gast OS
    // installiert sind
    //
    // Es kann passieren, dass dieser Befehl auf einer
    // "eingefrorenen" VM nicht funktioniert
    //
    if ( objVM.State == VM_STATE_RUNNING )
    {
        try
        {
            WScript.Echo("Versuche, die VM herunterzufahren...");
            task = objVM.GuestOS.Shutdown();
            WaitForTask(task);
        }
        catch (e)
        {
            //
            // Das Herunterfahren hat nicht funktioniert,
            // also schalte die VM aus
            //
            WScript.Echo("Erzwinge das Ausschalten der VM...");
            task = objVM.TurnOff();
            WaitForTask( task );
        }
    }

    //
    // Ist eine VM ausgeschltet, dann wird sie gestartet
    //
    if ( objVM.State == VM_STATE_OFF )
    {
        WScript.Echo("Starte VM...");
        objTask = objVM.StartUp();
        WaitForTask(objTask);
    }
}
else
{
    WScript.Echo("Konnte kein VM mit folgendem Namen finden: " +
        strVMName);
}

Kopieren Sie diesen Code in einen Editor und speichern die Datei mit der Endung .js ab. Danach können Sie sie auf dem Host (Server, der den Virtual Server 2005 ausführt) auf der Kommandozeile ausführen. Ersetzen Sie die Werte VS Server und Gast VM Name mit dem Namen Ihres Servers und mit dem Namen der virtuellen Maschine.

Diesen Code habe ich auf dem Blog von David Wang gefunden: http://blogs.msdn.com/david.wang/archive/2005/10/18/HOWTO_Remotely_start_and_stop_a_Virtual_Machine_on_Virtual_Server_2005.aspx – Thank you David for sharing this code on the web.

2 comments

  1. Eine andere Alternative ist das einschalten des Kompatibilitäts-Mousses im Internet Explorer 8. Dann funktioniert was Webinterface von Virtual Server 2005 auch wieder.

    Markus Noelker
    nacura it-SERVICE

    • Frank Piotrowsky says:

      Danke für die weitere Lösungsmöglichkeit Markus. Auf den Kompatibilitätsmodus muss man erst einmal kommen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.