Você pode usar o WMI para determinar se uma conexão obtém seus servidores DNS do DHCP?

3

A ordem de pesquisa do servidor DNS para uma interface de rede pode ser lida em Win32_NetworkAdapterConfiguration como esta no Powershell, ou programaticamente usando .Net ManagementObjects:

> $NICs = Get-WMIObject Win32_NetworkAdapterConfiguration | where{$_.IPEnabled -eq “TRUE”}
> $NICs[0]["DnsServerSearchOrder"]
192.168.1.1
192.168.1.2

A propriedade WMI é definida para os servidores DNS ativos, independentemente de a interface estar configurada para obtê-los do DHCP ou de serem configurados manualmente.

Você pode configurá-los para servidores fixos como este:

> $DNSServers = “198.102.234.125″,”198.102.234.126″
> $NIC.SetDNSServerSearchOrder($DNSServers)

Para definir um adaptador para usar DNS de um servidor DHCP, chame a função set com null da seguinte forma:

> $NIC.SetDNSServerSearchOrder()

Não consegui encontrar nenhum vestígio distinto dessa configuração no registro.

Existe alguma maneira de dizer que uma interface está atualmente configurada para usar o DHCP para obter seus servidores DNS?

    
por Derrick 14.03.2014 / 19:52

3 respostas

3

Normalmente, se um cliente está recebendo um IP do DHCP, ele também obtém servidores DNS ... geralmente.

Mas, para o seu pedido de WMI, não penso assim.

Para o DNS, você tem estas propriedades:

------------------------------------ ---------- -------------------------
 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
------------------------------------ ---------- -------------------------

Para o DHCP, você tem:

------------------------------------ ---------- -------------------------
 Class Name                           Type       Property Name
------------------------------------ ---------- -------------------------
 Win32_NetworkAdapterConfiguration    Boolean    DHCPEnabled
 Win32_NetworkAdapterConfiguration    DateTime   DHCPLeaseExpires
 Win32_NetworkAdapterConfiguration    DateTime   DHCPLeaseObtained
 Win32_NetworkAdapterConfiguration    String     DHCPServer
------------------------------------ ---------- -------------------------

Fora daqueles acima ... nenhum especificamente mostra nada para dizer que está obtendo servidores DNS do DHCP. DNSServerSearchOrder listará os servidores em uma matriz, mas não informará "Obtive estes do servidor DHCP".

EDIT: no entanto, tudo o que foi dito sobre o WMI, uma maneira que vejo é usar o antigo comando netsh .

Especificamente:

netsh interface ipv4 show dns

observe que haverá uma linha chamada: "servidores DNS configurados por meio do DHCP" se eles estiverem configurados dessa maneira.

    
por 14.03.2014 / 20:49
1

Execute Get-WMIObject Win32_NetworkAdapterConfiguration no sistema e você verá a saída da primeira propriedade:

DHCPEnabled:True

Infelizmente, é o mais próximo que você chegará das informações de DHCP e, obviamente, não especifica informações de DNS. Da documentação do Microsoft, o objeto WMI Win32_NEtworkAdapterConfiguration não mantém essa configuração.

link

    
por 14.03.2014 / 20:07
-1

Se o DNS estiver estático, DNSserverSearchOrder está definido ... Então

Get-WmiObject Win32_NetworkAdapterConfiguration | ForEach-Object { if ($_.DNSServerSearchOrder){Write-Host "$($_.Description) ----> STATIC"}else{Write-Host "$($_.Description) ----> DHCP"}}
    
por 12.06.2018 / 14:05