WIN1@Codename

Codename

Hyper-V をプログラムでどうにかしてみる その8 (メモリの設定)

前回は骨組みとなる仮想マシンを作成しました。
前回のプログラム実行後であれば、仮想マシン、CPU、メモリが実装された状態をHyper-Vマネージャーから確認することができると思います。
今回は、メモリの搭載値を任意に設定するプログラムとなります。

Dim objConnectionOptions As New ConnectionOptions()
objConnectionOptions.Impersonation = ImpersonationLevel.Impersonate
objConnectionOptions.EnablePrivileges = True
objConnectionOptions.Username = strAccount
objConnectionOptions.Password = strPassword
Dim objManagementScope As New ManagementScope("\\" + strServer + "\root\virtualization", objConnectionOptions)
objManagementScope.Connect()

Dim objComputerSystem As ManagementObject = Nothing
For Each objManagementObject As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_ComputerSystem WHERE ElementName = 'TetVM'")).Get
    objComputerSystem = objManagementObject
Next

Dim objVirtualSystemSettingData As ManagementObject = Nothing
For Each objManagementObject As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_VirtualSystemSettingData WHERE ElementName = 'TetVM'")).Get
    objVirtualSystemSettingData = objManagementObject
Next

Dim strMemorySettingData As String = ""
Dim objMemorySettingDataCollection As ManagementObjectCollection = objVirtualSystemSettingData.GetRelated("Msvm_MemorySettingData")
For Each objManagementObject As ManagementObject In objMemorySettingDataCollection
    objManagementObject("VirtualQuantity") = 512
    strMemorySettingData = objManagementObject.GetText(TextFormat.CimDtd20)
Next

For Each objVirtualSystemManagementService As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_VirtualSystemManagementService")).Get
    Dim objParams As ManagementBaseObject = objVirtualSystemManagementService.GetMethodParameters("ModifyVirtualSystemResources")
    objParams("ResourcesettingData") = New String() {strMemorySettingData}
    objParams("ComputerSystem") = objComputerSystem.Path.Path
    Dim objManagementBaseObject As ManagementBaseObject = objVirtualSystemManagementService.InvokeMethod("ModifyVirtualSystemResources", objParams, Nothing)
    Console.WriteLine("SetMemory=" & objManagementBaseObject("ReturnValue"))
Next

前回作成した「TestVM」という仮想マシンに512MBのメモリを割り当てています。 

コメント

コメントの投稿


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

トラックバック

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

FC2Ad