Start

Microsoft.Virtualization.VirtualServer.StartVM.Task (Task)

Element properties:

TargetMicrosoft.Virtualization.VirtualServer.2005R2.VirtualMachine
AccessibilityPublic
CategoryOperations
EnabledTrue
RemotableFalse
Timeout300

Member Modules:

ID Module Type TypeId RunAs 
StartVM WriteAction Microsoft.Windows.ScriptWriteAction Default

Source Code:

<Task ID="Microsoft.Virtualization.VirtualServer.StartVM.Task" Accessibility="Public" Enabled="true" Target="Microsoft.Virtualization.VirtualServer.2005R2.VirtualMachine">
<Category>Operations</Category>
<WriteAction ID="StartVM" TypeID="Windows!Microsoft.Windows.ScriptWriteAction">
<ScriptName>StartVM.vbs</ScriptName>
<Arguments>"$Target/Property[Type="Virtualization!Microsoft.Virtualization.VirtualServer.VirtualMachine"]/Name$"</Arguments>
<ScriptBody><Script>
' VBScript source code
' StartVM.vbs
' Arg 0 : VirtualMachine Name
Option Explicit

' Virtual Machine state const
Const vmVMState_Invalid = 0
Const vmVMState_TurnedOff = 1
Const vmVMState_Saved = 2
Const vmVMState_TurningOn = 3
Const vmVMState_Restoring = 4
Const vmVMState_Running = 5
Const vmVMState_Paused = 6
Const vmVMState_Saving = 7
Const vmVMState_TurningOff = 8
Const vmVMState_MergingDrives = 9
Const vmVMState_DeleteMachine = 10

'=============
' 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 " &amp; 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 &lt;&gt; 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 " &amp; TargetVMName &amp; " because it is in state " &amp; GetVMStateString(objectVM.State)
End If
End If
End If
</Script></ScriptBody>
<TimeoutSeconds>10</TimeoutSeconds>
</WriteAction>
</Task>