2011-07-16 8 views
2

HELOコマンドすべて、WMI経由でHyperV内の仮想マシンのネットワークアダプタのゲートウェイ、サブネットを変更するにはどうすればよいですか?

、私の質問は: 1. WMIおよびC#を経由して、プログラムでのHyper-Vで仮想マシン内でサブネットマスク、DNSアドレスとネットワークアダプタのゲートウェイアドレスを設定する方法は?

注:here

を説明するように、私が正常にIPアドレスを追加し、retireveすることができる午前親切に感謝

スティーブ

+0

これを行う方法のコードサンプルがありますか?私も同様の質問があり、解決策を探しています、ありがとう – KPS

答えて

2

ハイパーVはその公開SCVMMサービスdoesnの、そのためのサポートを持っていない助けますそれを行う方法はありません。手動で行う必要があります。

0

Server 2012以上であれば、@ slayerbotのリンクに行きますが、2012年以降でなければ、Win32_NetworkAdapterConfigurationクラスのメソッドを調べることができます。すなわちのWin32_NetworkAdapterConfigurationのSetDNSServerSearchOrder EnableStatic方法

https://msdn.microsoft.com/en-us/library/aa394217(v=vs.85).aspx#methods

IPアドレスを変更していない場合は、最初に現在のIPアドレスを照会してから、「EnableStatic」inParamsで再利用します。

また、変更するNICのインデックスも知っておく必要があります。

Imports System.Globalization 
Imports System.Management 

Module SetDNSServerSearchOrder 

    Dim UserName As String = "DOMAIN\UserName" 
    Dim Password As String = "Passw0rd1" 

    Public Sub Main() 
     Dim VmName As String = "HYPERVGUESTOS1"      ' Name of the VM to change NetworkAdapter on 
     Dim NicIndex As Int16 = 0         ' Index of the network adapter to change 
     Dim DnsList As String() = {"192.168.0.10", "192.168.0.11"} ' List of DNS IP Addresses 
     Dim Gateway As String = "192.168.0.1"      ' Gateway IP address 
     Dim IPAddress As String = "192.168.1.101"     ' New (or old) IP Address 
     Dim Subnet As String = "255.255.254.0"      ' Subnet mask 

     ' Get the network adapter to configure 
     Dim NetworkAdapter As ManagementObject = GetAdapter(VmName, NicIndex) 

     ' Set DNS Server search order, then change the gateway, then IP/Subnet 
     changeDNS(NetworkAdapter, DnsList) 
     ChangeGateway(NetworkAdapter, GateWay) 
     changeIP(NetworkAdapter, IPAddress, Subnet) 
    End Sub 

    Private Function GetAdapter(VmName As String, NicIndex As Int16) As ManagementObject 
     Dim Options As New ConnectionOptions With { 
      .Username = UserName, 
      .Password = Password 
     } 

     Dim Scope As New ManagementScope("\\" & VmName & "\Root\CIMV2", Options) 
     Dim Query As New SelectQuery("SELECT * FROM Win32_NetworkAdapterConfiguration.Index=" & NicIndex & "") 
     Using Searcher As New ManagementObjectSearcher(Scope, Query) 
      Using Collection As ManagementObjectCollection = Searcher.Get() 
       If Collection.Count = 0 Then 
        Throw New ManagementException(String.Format(CultureInfo.CurrentCulture, "No network adapter could be found with index ""{0}"" on host ""{1}""" & NicIndex, VmName)) 
       End If 

       For Each NetworkAdapter As ManagementObject In Collection 
        Return NetworkAdapter 
        Exit For 
       Next 
      End Using 
     End Using 
     Return Nothing 
    End Function 

    Private Sub changeDNS(NetworkAdapter As ManagementObject, DnsList As String()) 
     Using inParams As ManagementObject = NetworkAdapter.GetMethodParameters("SetDNSServerSearchOrder") 
      inParams("DNSServerSearchOrder") = DnsList 

      Using outParams As ManagementObject = NetworkAdapter.InvokeMethod("SetDNSServerSearchOrder", inParams, Nothing) 
       ' Validate the job output here 
      End Using 
     End Using 
    End Sub 

    Private Sub changeGateway(NetworkAdapter As ManagementObject, Gateway As String) 
     Using inParams As ManagementObject = NetworkAdapter.GetMethodParameters("SetGateways") 
      inParams("DefaultIPGateway") = Gateway 

      Using outParams As ManagementObject = NetworkAdapter.InvokeMethod("SetGateways", inParams, Nothing) 
       ' Validate the job output here 
      End Using 
     End Using 
    End Sub 

    Private Sub changeIP(NetworkAdapter As ManagementObject, IPAddress As String, Subnet As String) 
     Using inParams As ManagementObject = NetworkAdapter.GetMethodParameters("EnableStatic") 
      inParams("IPAddress") = IPAddress 
      inParams("SubnetMask") = Subnet 

      Using outParams As ManagementObject = NetworkAdapter.InvokeMethod("EnableStatic", inParams, Nothing) 
       ' Validate the job output here 
      End Using 
     End Using 
    End Sub 
End Module 
関連する問題