HELOコマンドすべて、WMI経由でHyperV内の仮想マシンのネットワークアダプタのゲートウェイ、サブネットを変更するにはどうすればよいですか?
、私の質問は: 1. WMIおよびC#を経由して、プログラムでのHyper-Vで仮想マシン内でサブネットマスク、DNSアドレスとネットワークアダプタのゲートウェイアドレスを設定する方法は?
注:here
を説明するように、私が正常にIPアドレスを追加し、retireveすることができる午前親切に感謝
スティーブ
HELOコマンドすべて、WMI経由でHyperV内の仮想マシンのネットワークアダプタのゲートウェイ、サブネットを変更するにはどうすればよいですか?
、私の質問は: 1. WMIおよびC#を経由して、プログラムでのHyper-Vで仮想マシン内でサブネットマスク、DNSアドレスとネットワークアダプタのゲートウェイアドレスを設定する方法は?
注:here
を説明するように、私が正常にIPアドレスを追加し、retireveすることができる午前親切に感謝
スティーブ
ハイパーVはその公開SCVMMサービスdoesnの、そのためのサポートを持っていない助けますそれを行う方法はありません。手動で行う必要があります。
私は同じのために外を見て、これにぶつかった、
http://blogs.msdn.com/b/taylorb/archive/2014/11/03/setting-guest-ip-addresses-from-the-host.aspx
サブネットとゲートウェイと一緒にIPを設定することは可能ですが、最小要件は、
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
これを行う方法のコードサンプルがありますか?私も同様の質問があり、解決策を探しています、ありがとう – KPS