WIN1@Codename

Codename

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

Hyper-V をプログラムで制御するにはWMIを利用することになります。

参考:http://msdn.microsoft.com/en-us/library/cc136986(VS.85).aspx

こちらを利用してHyper-Vを自動化・リモート制御などしてみようというのが目的です。

まずは基本となる構文から。
ホストサーバー上のゲストOS名の一覧を取得します。

Imports System.Management

Dim objManagementScope As New ManagementScope(\\.\root\virtualization)
objManagementScope.Connect()

Dim objObjectQuery As New ObjectQuery("SELECT * FROM Msvm_ComputerSystem WHERE Caption LIKE '仮想マシン'")
Dim objManagementObjectSearcher As New ManagementObjectSearcher(objManagementScope, objObjectQuery)
Dim objManagementObjectCollection As ManagementObjectCollection = objManagementObjectSearcher.Get
Dim strMsg As String
For Each objManagementObject As ManagementObject In objManagementObjectCollection
    strMsg += objManagementObject("ElementName") & vbCrLf
Next
MsgBox(strMsg)

上記の例ではHyper-Vのホスト上、つまりローカルで制御する場合となります。
リモートからHyper-Vの制御を行う場合は認証情報を付加する必要があります。

Imports System.Management

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

Dim objObjectQuery As New ObjectQuery("SELECT * FROM Msvm_ComputerSystem WHERE Caption LIKE '仮想マシン'")
Dim objManagementObjectSearcher As New ManagementObjectSearcher(objManagementScope, objObjectQuery)
Dim objManagementObjectCollection As ManagementObjectCollection = objManagementObjectSearcher.Get
Dim strMsg As String
For Each objManagementObject As ManagementObject In objManagementObjectCollection
    strMsg += objManagementObject("ElementName") & vbCrLf
Next
MsgBox(strMsg)

各オブジェクトの詳細などは省いて、まずはこんな感じでコードを書いてゆくというのがわかればOKかなと思います。


コメント

コメントの投稿


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

トラックバック

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

FC2Ad