首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤器中的WQL不工作

过滤器中的WQL不工作
EN

Stack Overflow用户
提问于 2015-02-13 14:58:37
回答 2查看 840关注 0票数 4

我试着做这样的事情:

代码语言:javascript
复制
Get-WmiObject Win32_NetworkAdapterConfiguration `
    -Filter "DefaultIPGateway!=NULL"

但我有个错误:

一行的无效查询:1 char:14 + Get-WmiObject <<<< Win32_NetworkAdapterConfiguration -Filter "DefaultIPGateway!=NULL“+ CategoryInfo : InvalidOperation:(:) Get-WmiObject,ManagementException + FullyQualifiedErrorId : GetWMIManagementException,CategoryInfo

这很奇怪,因为当我尝试获取DefaultIPGateway值的类型时。它是现有值的System.Array:

代码语言:javascript
复制
PS> $result[0].DefaultIPGateway.Gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String[]                                 System.Array

对于不存在的值,为NULL:

代码语言:javascript
复制
PS> $result[1].DefaultIPGateway.GetType()
You cannot call a method on a null-valued expression.
At line:1 char:36
+ $result[1].DefaultIPGateway.GetType <<<< ()
    + CategoryInfo          : InvalidOperation: (GetType:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

有人能帮助我理解为什么我的WQL不起作用,以及我该怎么做才能让它运转起来?

EN

回答 2

Stack Overflow用户

发布于 2015-02-13 15:07:06

我不知道如何使筛选器查询工作,因为我不知道如何访问数组元素来检查它们,但有一个解决办法:

代码语言:javascript
复制
Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.DefaultIPGateway -ne $null }

这样,powershell将负责过滤从查询返回的对象,而不是在检索期间进行WMI。

票数 2
EN

Stack Overflow用户

发布于 2016-01-31 11:20:32

WQL-查询不支持数组属性。

注WQL不支持数组数据类型的查询。

来源:使用WQL @ MSDN查询

解决方案是使用PowerShell的Where-Object cmdlet过滤空值对象。

代码语言:javascript
复制
Get-WmiObject -Class Win32_NetworkAdapterConfiguration |
Where-Object { $_.DefaultIPGateway }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28502337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档