为什么我的 WQL 查询不接受我的 "IS NOT NULL" 参数?

Why is my WQL Query not accepting my "IS NOT NULL" argument?

请原谅,如果这很简单,请尝试 google,这里的搜索功能有一些类似的问题,但在这种情况下没有适合我的答案。

为了尽可能避开流水线,我正在阅读WQL queries offered using the -Query parameter in Get-CimInstance。在我看来,这是一个简单的查询(除非我遗漏了一些东西)应该select MACAddress, IPAddress,来自class of Win32_NetworkAdapterConfiguration,来自属性 of 的可用实例IPAddress 不为空。

Get-CimInstance -Query "SELECT MACAddress, IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPAddress != NULL" 

起初,我认为这是我这边的一个错误,因为抛出了异常,读取了一条消息说查询无效,但这有效:

Get-CimInstance -Query "SELECT MACAddress, IPAddress FROM Win32_NetworkAdapterConfiguration WHERE MACAddress != NULL" 

# or - using -Filter

Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration -Filter "MACAddress != NULL"

我可以得到一些这方面的指导吗?也许分享这个问题的替代解决方案?


IPAddress 是一个有效的 属性,我可以使用 Where-Object 轻松过滤它,但是,希望学习新的东西并更好地理解 WQL .

[...] looking to learn something new and understand WQL a little better.

关于 WQL,您实际上只需要了解一件事[1]:

WQL 不支持过滤数组值

所以您使用 Where-Object 过滤的最初直觉是正确的:)

用于过滤掉具有 NULL 值的实例的正确语法(假设您过滤的是标量类型的 属性,此处使用 MACAddress 属性 作为示例)是:

SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress IS NOT NULL