WIN1@Codename

Codename

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Hyper-V をプログラムでどうにかしてみる その16 (VLAN ID の設定)

Hyper-Vを使用する場合、状況によってはVLANを使用する場合もあるかと思います。
Hyper-Vでは、VLAN ID を割り振ることでVLANを使用することが出来ます。
WMIを使用してVLAN ID を設定してみましょう。

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

Dim objVirtualSystemsettingData As ManagementObject = Nothing
For Each objManagementObject As ManagementObject In objComputerSystem.GetRelated("Msvm_VirtualSystemsettingData")
    objVirtualSystemsettingData = objManagementObject
Next

Dim objVirtualSwitch As ManagementObject = Nothing
Dim strVirtualSwitchName As String = ""
For Each objManagementObject As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_VirtualSwitch WHERE ElementName = '" & strNetworkName & "'")).Get
    objVirtualSwitch = objManagementObject
    strVirtualSwitchName = objVirtualSwitch("Name")
Next

Dim objSyntheticEthernetPortSettingData As ManagementObject = Nothing
Dim objNic As ManagementObject = Nothing
Dim strConnection As String = ""
For Each objManagementObject As ManagementObject In objVirtualSystemsettingData.GetRelated("Msvm_SyntheticEthernetPortSettingData")
    If objManagementObject("ElementName") = "ネットワーク アダプター" Then
        objNic = objManagementObject
        strConnection = objNic("Connection")(0)
    End If
Next

Dim objVLANEndpoint As ManagementObject = Nothing
Dim strVLANEndpointName As String = ""
For Each objManagementObject As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_VLANEndpoint WHERE SystemName = '新しい仮想ネットワーク'")).Get
    objVLANEndpoint = objManagementObject
    strVLANEndpointName = objVLANEndpoint("Name")
    If InStr(strConnection, strVLANEndpointName) > 0 Then
        Exit For
    End If
Next

Dim objVLANEndpointSettingData As ManagementObject = Nothing
For Each objManagementObject As ManagementObject In New ManagementObjectSearcher(objManagementScope, New ObjectQuery("SELECT * FROM Msvm_VLANEndpointSettingData WHERE InstanceID LIKE '%" & strVLANEndpointName & "'")).Get
    objVLANEndpointSettingData = objManagementObject
    objVLANEndpointSettingData("AccessVLAN") = intVLanID
    objVLANEndpointSettingData.Put()
Next 

今回のポイントは、一番最後の objVLANEndpointSettingData.Put() の部分です。
これまで設定を変更するには、「ModifyVirtualSystemResources」を使用していましたが、VLAN ID に関しては「Put」メソッドで設定完了となります。

コメント

コメントの投稿


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

トラックバック

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

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。