我可以使用以下WMI查询来确定我的机器可能正在使用的任何DNS服务器:
SELECT DNSServerSearchOrder
FROM Win32_NetworkAdapterConfiguration
但是,我写的忽略空条目的以下查询无效,我不知道原因:
SELECT DNSServerSearchOrder
FROM Win32_NetworkAdapterConfiguration
WHERE DNSServerSearchOrder!=null
有没有办法过滤掉空条目?
WQL语言supports !=
和IS [NOT] NULL
语法,问题是你选择的属性DNSServerSearchOrder
是一个数组,和you can't use an array property in a WQL Where sentence。因此,解决方法是在where条件中使用Win32_NetworkAdapterConfiguration
WMI类的另一个属性。
只需使用它
WHERE IPEnabled=True
这是一篇较旧的帖子,但我今天自己需要这些信息,从Powershell列出在系统上用作DNS服务器的IP地址:
Get-WmiObject -Namespace root\cimv2 -Query "Select dnsserversearchorder from win32_networkadapterconfiguration" | where {$_.DNSServerSEarchOrder -ne $null} | select -ExpandProperty DNSServerSearchOrder
这导致了一个简单的IP地址数组,可以在Powershell中进一步使用,可以通过发送变量或通过管道连接到另一个命令。
你在寻找这个:
SELECT DNSServerSearchOrder
FROM Win32_NetworkAdapterConfiguration
WHERE DNSServerSearchOrder IS NOT NULL