こちら http://www.ravichaganti.com/blog/?p=70 にあるスクリプトを参考に
日本語環境で使えるようにしてみました。
といっても赤字のところだけ直しただけですが....
スクリプトも動くようになったので本格的に業務移行に移りたいです。
Set args = WScript.Arguments
If WScript.Arguments.Count = 1 Then
strAction = WScript.Arguments.Item(0)
Else
Wscript.Echo "Usage: VMState.vbs <Action>"
WScript.Echo " VMState.vbs start/shutdown/save"
Wscript.Quit
End If
Select case strAction
Case "start"
ChangeVMState(2)
Case "shutdown"
ShutVMs
Case "save"
ChangeVMState(32769)
Case else
Wscript.Echo "Usage: VMState.vbs <Action>"
WScript.Echo " VMState.vbs start/shutdown/save"
WScript.Quit
End Select
Sub ChangeVMState(x)
Set WMIObject = GetObject("winmgmts:\\.\root\virtualization")
Set VMList = WMIObject.ExecQuery("SELECT * FROM Msvm_ComputerSystem")
For Each VM In VMList
if VM.Caption = "仮想マシン" then
WScript.Echo "VM Name: " & VM.ElementName
WScript.Echo "VM GUID: " & VM.Name
WScript.Echo "VM State: " & VM.EnabledState
VM.RequestStateChange(x)
End if
Next
End Sub
Sub ShutVMs
WScript.Echo "ShutDown Start"
Set WMIObject = GetObject("winmgmts:\\.\root\virtualization")
Set VMList = WMIObject.ExecQuery("SELECT * FROM Msvm_ComputerSystem")
For Each VM In VMList
WScript.Echo "VM Captin:" & VM.Caption
if VM.Caption = "仮想マシン" and VM.EnabledState = 2 then
WScript.Echo "VM Name: " & VM.ElementName
WScript.Echo "VM GUID: " & VM.Name
WScript.Echo "VM State: " & VM.EnabledState
If not VM.EnabledState = 32769 Then
Set vmshut = WMIObject.ExecQuery("SELECT * FROM Msvm_ShutdownComponent WHERE SystemName='" & VM.Name & "'")
vmReturn = vmshut.ItemIndex(0).InitiateShutdown(True,"Scripted Shutdown")
Else
WScript.Echo "VM is in saved State. Cannot perform shutdown now"
End If
End if
Next
End Sub