'=============
' Method: GetVirtualMachineObject
' Description: This sub gets the ref to a VM through VirtualServer COM Interface on local machine
'=============
Sub GetVirtualMachineObject(ByRef objVM, ByVal sVMName)
Dim oVS
set oVS = CreateObject("virtualserver.application")
set objVM = oVS.FindVirtualMachine(sVMName)
If (objVM is Nothing) Then
LogErrorToEventLog 1, "Cannot find virtual machine " & sVMName
End If
End Sub
'=============
' Method: LogErrorToEventLog
' Description: This sub log an event to local machine's event log
'=============
Sub LogErrorToEventLog(ByVal severity, ByVal sMessage)
Dim Wsh
Set Wsh = Wscript.CreateObject("WScript.Shell")
Wsh.LogEvent severity, sMessage
End Sub
'=============
' Method: GetVMStateString
' Description: This function returns the name of the vm state
'=============
Function GetVMStateString(ByVal vmState)
Select Case vmState
Case vmVMState_Invalid
GetVMStateString = "Invalid"
Case vmVMState_TurnedOff
GetVMStateString = "TurnedOff"
Case vmVMState_Saved
GetVMStateString = "Saved"
Case vmVMState_TurningOn
GetVMStateString = "TurningOn"
Case vmVMState_Restoring
GetVMStateString = "Restoring"
Case vmVMState_Running
GetVMStateString = "Running"
Case vmVMState_Paused
GetVMStateString = "Paused"
Case vmVMState_Saving
GetVMStateString = "Saving"
Case vmVMState_TurningOff
GetVMStateString = "TurningOff"
Case vmVMState_MergingDrives
GetVMStateString = "MergingDrives"
Case vmVMState_DeleteMachine
GetVMStateString = "DeleteMachine"
Case Else
GetVMStateString = "Invalid"
End Select
End Function
Dim oArgs, TargetVMName
Set oArgs = WScript.Arguments
if oArgs.Count <> 1 Then
WScript.Quit()
End If
TargetVMName = oArgs(0)
Dim objectVM
GetVirtualMachineObject objectVM, TargetVMName
If Not (objectVM is Nothing) Then
If (objectVM.State = vmVMState_TurnedOff) or (objectVM.State = vmVMState_Saved) Then
objectVM.Startup()
Else
If (objectVM.State = vmVMState_Paused) Then
objectVM.Resume()
Else
LogErrorToEventLog 2, "Cannot start virtual machine " & TargetVMName & " because it is in state " & GetVMStateString(objectVM.State)
End If
End If
End If </Script></ScriptBody>
<TimeoutSeconds>10</TimeoutSeconds>
</WriteAction>
</Task>