【问题标题】:WMI Query to determine DNS Servers without null entriesWMI 查询以确定没有空条目的 DNS 服务器
【发布时间】:2013-05-29 02:11:06
【问题描述】:

我可以使用以下 WMI 查询来确定我的机器可能正在使用的任何 DNS 服务器:

SELECT DNSServerSearchOrder
FROM Win32_NetworkAdapterConfiguration

但是,我为忽略空条目而编写的以下查询无效,我不知道为什么:

SELECT DNSServerSearchOrder
FROM Win32_NetworkAdapterConfiguration
WHERE DNSServerSearchOrder!=null

有没有办法过滤掉空条目?

【问题讨论】:

    标签: wmi


    【解决方案1】:

    WQL 语言supports!=IS [NOT] NULL 语法,问题是您选择的属性DNSServerSearchOrder 是一个数组,而you can't use an array property in a WQL Where sentence。所以解决方法是在 where 条件下使用Win32_NetworkAdapterConfiguration WMI 类的另一个属性。

    【讨论】:

      【解决方案2】:

      就用这个

      WHERE IPEnabled=True
      

      【讨论】:

        【解决方案3】:

        这是一篇较早的帖子,但我今天自己需要这些信息,从 Powershell 列出系统上用作 DNS 服务器的 IP 地址:

        Get-WmiObject -Namespace root\cimv2 -Query "Select dnsserversearchorder from win32_networkadapterconfiguration" | where {$_.DNSServerSEarchOrder -ne $null} | select -ExpandProperty DNSServerSearchOrder
        

        这会产生一个简单的 IP 地址数组,可以通过发送到变量或通过管道传递到另一个命令在 Powershell 中进一步使用。

        【讨论】:

        • 这完全按照它应该的方式工作。谢谢你。试图让 DNS 自动通过管道传输到 WSL2 实例。
        【解决方案4】:

        您是否正在寻找这个:

        SELECT DNSServerSearchOrder
        FROM Win32_NetworkAdapterConfiguration
        WHERE DNSServerSearchOrder IS NOT NULL
        

        【讨论】:

        • 那个好像也是无效的,你在Powershell里试过了吗?
        • 不,只是有效的 SQL -- 你在用这个吗:msdn.microsoft.com/en-us/library/windows/desktop/…
        • 据我所知,语法应该是正确的,因为“SELECT DHCPServer FROM Win32_NetworkAdapterConfiguration WHERE DHCPServer!=null”是有效的。
        猜你喜欢
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        • 2014-11-22
        • 1970-01-01
        • 2014-02-11
        • 1970-01-01
        • 1970-01-01
        • 2011-01-15
        相关资源
        最近更新 更多