您可以使用WMI来确定连接是否从DHCP获取其DNS服务器?

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