networking接口的DNS服务器search顺序可以像这样在Powershell中从Win32_NetworkAdapterConfiguration中读取,或者使用.Net ManagementObjects以编程方式读取:
> $NICs = Get-WMIObject Win32_NetworkAdapterConfiguration | where{$_.IPEnabled -eq “TRUE”} > $NICs[0]["DnsServerSearchOrder"] 192.168.1.1 192.168.1.2
无论是将接口configuration为从DHCP获取还是手动设置,都将WMI属性设置为活动的DNS服务器。
您可以将它们设置为像这样的固定服务器:
> $DNSServers = “198.102.234.125″,”198.102.234.126″ > $NIC.SetDNSServerSearchOrder($DNSServers)
要将适配器设置为使用来自DHCP服务器的DNS,可以使用null调用set函数,如下所示:
> $NIC.SetDNSServerSearchOrder()
我无法在registry中find此设置的任何独特痕迹。
有什么办法可以告诉一个接口当前设置为使用DHCP来获取其DNS服务器?
通常,如果一个客户端从DHCP获取IP,它通常也会获得DNS服务器。
但是对于你对WMI的要求,我不这么认为。
对于DNS你有这些属性:
------------------------------------ ---------- ------------------------- Class Name Type Property Name ------------------------------------ ---------- ------------------------- Win32_ComputerSystem String DNSHostName Win32_NetworkAdapterConfiguration String DNSDomain Win32_NetworkAdapterConfiguration String DNSDomainSuffixSearchOrder Win32_NetworkAdapterConfiguration Boolean DNSEnabledForWINSResolution Win32_NetworkAdapterConfiguration String DNSHostName Win32_NetworkAdapterConfiguration String DNSServerSearchOrder Win32_NetworkAdapterConfiguration Boolean DomainDNSRegistrationEnabled Win32_NetworkAdapterConfiguration Boolean FullDNSRegistrationEnabled Win32_NTDomain String DnsForestName Win32_NTDomain Boolean DSDnsControllerFlag Win32_NTDomain Boolean DSDnsDomainFlag Win32_NTDomain Boolean DSDnsForestFlag ------------------------------------ ---------- -------------------------
对于DHCP你有:
------------------------------------ ---------- ------------------------- Class Name Type Property Name ------------------------------------ ---------- ------------------------- Win32_NetworkAdapterConfiguration Boolean DHCPEnabled Win32_NetworkAdapterConfiguration DateTime DHCPLeaseExpires Win32_NetworkAdapterConfiguration DateTime DHCPLeaseObtained Win32_NetworkAdapterConfiguration String DHCPServer ------------------------------------ ---------- -------------------------
在上述之外…没有任何具体的东西告诉你它是从DHCP获取DNS服务器。 DNSServerSearchOrder将列出数组中的服务器,但不会说“我从DHCP服务器获得这些服务器。
编辑:但是,所有关于WMI的说法,我所看到的一种方法是使用旧的netsh命令。
特别:
netsh interface ipv4 show dns
请注意,如果以这种方式configuration,将会有一行称为“通过DHCPconfiguration的DNS服务器” 。
在系统上运行Get-WMIObject Win32_NetworkAdapterConfiguration,您将看到第一个属性输出为:
DHCPEnabled:True
不幸的是,这是最接近你的DHCP信息,显然它没有指定DNS信息。 从微软文档,WMI对象Win32_NEtworkAdapterConfiguration不保留该设置。
http://msdn.microsoft.com/en-us/library/aa394217%28v=vs.85%29.aspx