Windows

您能否使用 WMI 確定連接是否從 DHCP 獲取其 DNS 伺服器?

  • August 6, 2021

網路介面的 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 伺服器” 。

引用自:https://serverfault.com/questions/582199