Dieses Script startet eine VMWare-Virtual Maschine auf einem Remote VMWare-Server und verbindet anschließend per Terminal-Console zum Gastsystem.
Zur Ausführung wird lokal die VMCom-Api von VMWare benötigt. (Frei verfügbar auf VMWare.com)
Achtung: in dieser Version muß in der Konfiguration ein Nutzer mit Passwort hinterlegt werden, der die VM-Starten darf.
Vor Ausführung muß das Script konfiguriert werden!
Script als *.vbs abspeichern:
'Region Description ' ' Name: Start_Reomote_VM ' Author: Stefan Mrosek ' Version: 0.1 ' Description: Das Script startet eine VM auf einem RemoteServer, prüft ob diese läuft ' und startet anschließend ein Programm auf dem lokalen Rechner ' ' ' EndRegion
'Region Changelog
' 11.12.06 Start of Coding
'EndRegion
'Region Konfiguration
vmfile = "E:\w2k_ws1\w2k_ws1.vmx" 'Pfad zum VMX-File der VM - relativ zum VMWare Server local_app = "mstsc.exe" 'Das lokal zu statende Programm local_app_Para = "/v:VMGuest" 'Parameter für den Programmaufruf
remote_host = "172.24.128.8" 'IP-Adresse des VMWare Servers remote_port = "902" '902 ist Standard remote_user = "Nutzer" 'Nutzer auf dem VMWareServer, der die VM starten darf remote_pass = "Passwort" 'Passwort
VMStartMaxTries = 20 'Anzahl der Versuche, die VM zu Starten VMStartTryInterval = 30 'Sekunden zwischen den Versuchen VMStartedHeartbeats = 300 'Anzahl der benötigten Hartbeats um zu bestätigen das die VM 'Up&Running ist 'EndRegion
'### Ab hier wirds ernst - nichts mehr Ändern
'Region Global Settings 'On Error Resume Next Set wshShell = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") Set wshNet = CreateObject("WScript.Network")
'Region Objekte Initialisieren Set cp = CreateObject("VmCOM.VmConnectParams") Set server = CreateObject("VmCOM.VmServerCtl") Set thevm = CreateObject("VmCOM.VmCtl")
If Err.number <> 0 Then MSG = MsgBox("Es schein Probleme mit der VMCom-API zu geben.", vbCritical, " ERROR") WScript.Quit End If
'Region Verbindung zum VMWare Server herstellen connected = False For tries_srv = 1 To 10 server.Connect cp If Err.number = 0 Then connected = True Exit For End If WScript.Sleep OneSecond Err.clear Next If Not connected Then MSG = MsgBox("Keine Verbindung zum VMWare-Server - Verbindungsdaten prüfen.", vbCritical, " ERROR") WScript.Quit End If 'EndRegion
'Region Verbindung zur VM herstellen connected_m = False For tries_vm = 1 To 10 thevm.Connect cp, vmfile If Err.number = 0 Then connected_m = True Exit For End If WScript.Sleep OneSecond Err.clear Next If Not connected_m Then MSG = MsgBox("Keine Verbindung zur VM - Verbindungsdaten prüfen.", vbCritical, " ERROR") WScript.Quit End If 'EndRegion
'Region Status der VM ermitteln ps = thevm.ExecutionState If ps = vmExecutionState_On Then is_on = True 'VM läuft MSG = MsgBox("Die VM läuft bereits.", vbExclamation, "Hinweis")
ElseIf ps = vmExecutionState_Off Or ps = vmExecutionState_Suspended Then was_on = False 'ist Aus is_on = False Else MSG = MsgBox("Die VM befindet sich in einem undefiniertem Zustand - keine Verbindung möglich.", vbCritical, " ERROR") WScript.Quit End If
'EndRegion
'Region VM Starten wenn nötig If is_on = False Then geton = thevm.start(vmPowerOpMode_Soft) 'Abwarten bis Hartbeat OK For tries_on = 1 To VMStartMaxTries Heartbeat = thevm.Heartbeat If Heartbeat > VMStartedHeartbeats Then is_on = True Exit For End If WScript.Sleep VMStartTryInterval * OneSecond Next If is_on = False Then MSG = MsgBox("Start der VM fehlgeschlagen - Bitte Zustand prüfen.", vbCritical, " ERROR") WScript.Quit End If End If 'EndRegion
'Region lokales Programm Starten If is_on = True Then 'If fso.FileExists (local_app) Then On Error Resume Next Set oExec = wshShell.run(local_app & " " & local_app_Para) 'End If End If
Admins-Tipps.net - Tipps und Tricks rund um die EDV und Hosting-Tipps.net - Der Preis-Leistungs-Vergleich der Webhoster sind Projekte von Stefan Mrosek (c) 2007