Windows
您能否使用 WMI 確定連接是否從 DHCP 獲取其 DNS 伺服器?
網路介面的 DNS 伺服器搜尋順序可以像這樣在 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
WMI 屬性設置為活動的 DNS 伺服器,無論介面配置為從 DHCP 獲取它們,還是手動設置它們。
您可以將它們設置為固定伺服器,如下所示:
> $DNSServers = “198.102.234.125″,”198.102.234.126″ > $NIC.SetDNSServerSearchOrder($DNSServers)
要將適配器設置為使用來自 DHCP 伺服器的 DNS,請使用 null 呼叫 set 函式,如下所示:
> $NIC.SetDNSServerSearchOrder()
我無法在系統資料庫中找到此設置的任何獨特痕跡。
有沒有辦法告訴介面目前設置為使用 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
請注意,如果以這種方式配置,將會有一行名為:“通過 DHCP 配置的 DNS 伺服器” 。