WIN1@Codename

Codename

Hyper-V をプログラムでどうにかしてみる VBScript その1 (仮想マシンの作成)

PowerShellでのHyper-Vの管理スクリプトはネット上にたくさんあるのですが、VBS(WSH)のサンプルとなると、なかなかみつかりません。

そこで、以前VB.NETで作成した内容を基にVBSでHyper-Vをどうにかしてみるスクリプトを参考までにいくつかアップしてみようかと思います。

まずは、基本となる仮想マシンの作成です。
今回は仮想マシン名を "TestVM" として、"E:\Hyper-V\TestVM" に仮想マシンを作成しています。


Option Explicit 

Dim strServerName, strVMName,  objWMIService, objManagementService
strServerName = "."
strVMName = "TestVM"   
Set objWMIService = GetObject("winmgmts:\\" & strServerName & "\root\virtualization")
Set objManagementService = objWMIService.ExecQuery("SELECT * FROM Msvm_VirtualSystemManagementService").ItemIndex(0)

Call DefineVM(strVMName)

Function DefineVM(strVMName) 
    Dim objVirtualSystemGlobalsettingData
    Set objVirtualSystemGlobalsettingData = objWMIService.Get("Msvm_VirtualSystemGlobalsettingData").SpawnInstance_()
    objVirtualSystemGlobalsettingData.ElementName = strVMName
    objVirtualSystemGlobalsettingData.ExternalDataRoot = "E:\Hyper-V\" & strVMName

    Dim objInParam, objOutParams
    Set objInParam = objManagementService.Methods_("DefineVirtualSystem").InParameters.SpawnInstance_()
    objInParam.ResourcesettingData = Null
    objInParam.Sourcesetting = Null
    objInParam.SystemsettingData = objVirtualSystemGlobalsettingData.GetText_(1)
    Set objOutParams = objManagementService.ExecMethod_("DefineVirtualSystem", objInParam)

    Call JobCompleted(objOutParams, objWMIService)
End Function

Function JobCompleted(objOutParams, objWMIService)
    Dim objJob
    If (objOutParams.ReturnValue = 0) Then
        Wscript.Echo "OK"
    ElseIf (objOutParams.ReturnValue <> 4096) Then
        Wscript.Echo "NG"
    Else  
        Set objJob = objWMIService.Get(objOutParams.Job)
        While (objJob.JobState = 3) Or (objJob.JobState = 4)
WScript.Sleep(1000)
Set objJob = objWMIService.Get(objOutParams.Job)
        Wend
        If (objJob.JobState <> 7) Then
Wscript.Echo "NG"
Wscript.Echo "ErrorCode:" & objJob.ErrorCode
Wscript.Echo "ErrorDescription:" & objJob.ErrorDescription
        Else
Wscript.Echo "OK"
        End If
    End If
End Function


と、ここまではよくあるサンプルですね。
さらにつづきます。

コメント

コメントの投稿


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

トラックバック

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

FC2Ad