WIN1@Codename

Codename

Hyper-Vのクライアント制御コード

TechNetフォーラムでコマンドでHyper-Vのクライアントを制御したいとの質問がありましたので、その回答です。

Sub Start (strNmae)
    Dim objWMI, VMList, VM
    Set objWMI = GetObject("winmgmts:\\.\root\virtualization")
    Set VMList = objWMI.ExecQuery("SELECT * FROM Msvm_ComputerSystem") 
    For Each VM In VMList
        If VM.Caption = "仮想マシン" then
            If VM.ElementName = strName Then
                VM.RequestStateChange(2)
            End If
        End if
    Next
End Sub

Sub Shutdown(strName)
    Dim objWMI, VMList, VM, objVMShutdown, objRes
    Set objWMI = GetObject("winmgmts:\\.\root\virtualization")
    Set VMList = objWMI.ExecQuery("SELECT * FROM Msvm_ComputerSystem")
    For Each VM In VMList
        If VM.Caption = "仮想マシン" and VM.EnabledState = 2 then
            If VM.ElementName = strName Then
                If Not VM.EnabledState = 32769 Then
                    Set objVMShutdown = objWMI.ExecQuery("SELECT * FROM Msvm_ShutdownComponent WHERE SystemName='" & VM.Name & "'")
                    objRes = objVMShutdown.ItemIndex(0).InitiateShutdown(True,"Scripted Shutdown")
                Else
                    Msgbox "NG"
                End If
            End if
        End if
    Next
End Sub


コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://codename2010.blog11.fc2.com/tb.php/63-d778e305
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad