2015-02-13 3 views
4

Я пытаюсь сделать что-то вроде:WQL фильтр не работает

Get-WmiObject Win32_NetworkAdapterConfiguration ` 
    -Filter "DefaultIPGateway!=NULL" 

Но у меня есть ошибка:

Get-WmiObject : Invalid query At line:1 char:14 + Get-WmiObject <<<< Win32_NetworkAdapterConfiguration -Filter "DefaultIPGateway!=NULL" + CategoryInfo : InvalidOperation: (:) [Get-WmiObject], ManagementException + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

Это странно, потому что, когда я пытаюсь получить тип Значение DefaultIPGateway. Это System.Array для существующих значений:

PS> $result[0].DefaultIPGateway.Gettype() 

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

И в NULL для несуществующих значений:

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 не работает, и что я должен сделать, чтобы заставить его уйти?

ответ

2

Я не уверен, как сделать работу фильтра запроса, поскольку я не знаю, как получить доступ к элементам массива, чтобы проверить их, но есть обходной путь:

Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.DefaultIPGateway -ne $null } 

Таким образом, PowerShell будет отвечающий за фильтрацию объектов, возвращаемых из запроса, а не WMI, выполняющих его во время извлечения.

+0

acro444, у меня уже было такое обходное решение. Спасибо хоть. – Alesia

1

WQL-запросы не поддерживают свойства массива.

Note WQL does not support queries of array datatypes.

Источник: Querying with WQL @ MSDN

Решение отфильтровать объекты с нулевой стоимостью, используя Where-Object командлет PowerShell в.

Get-WmiObject -Class Win32_NetworkAdapterConfiguration | 
Where-Object { $_.DefaultIPGateway } 
Смежные вопросы