VM im Virtual Server 2005 von Kommandozeile starten

2 Comments

Lesedauer ca.  Minuten

byFrank Piotrowsky

September 8, 2009

VM Kommandozeile starten

Dieser Artikel beschreibt, wie Sie eine Virtual Machine (VM) im Mircosoft Virtual Server 2005 von der Kommandozeile starten.

Anmerkung

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).

Quick Navigation

Das Problem

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.

Die Lösung

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.

Und so können Sie eine VM von der Kommandozeile starten.

Kudos!

Diesen Code habe ich auf dem Blog von David Wang gefunden: https://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.



Über den Autor

Frank Piotrowsky ist IT-Consultant und beschäftigt sich mit der Automatisierung von Arbeitsprozessen, Netzwerkadministration und deren Automatisierung, sowie mit Software-Entwicklung, die ebenfalls in diese Richtung zielt. "Wenn der Computer die Arbeit für Sie erledigen kann, warum sollten Sie sie dann tun?" ist die Philosophie, die hinter dem Thema steckt.

Tags


Das könnte Sie auch interessieren:

Frank Piotrowsky

01/01/2024

E-Mail Verschlüsselung Microsoft 365

E-Mail Verschlüsselung Microsoft 365
Remotedesktop über Gateway ohne VPN verbinden
Remotedesktopverbindung: RDG Zertifikat installieren

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
>