Форматирование WQL-запроса в powershell

Я пытаюсь отформатировать запрос WQL в powershell, чтобы искать только адаптер проводного Ethernet, используя следующий код

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "Name LIKE '%Ethernet%' OR '%Gigabit%'" -CN "." | Out-Host

Однако я не очень хорошо разбираюсь в SQL/WQL, и я не уверен, правильно ли я форматирую оператор OR в PS, если кто-то может указать мне правильное направление, я был бы признателен.

Спасибо!


person Medium    schedule 29.11.2017    source источник


Ответы (2)


Вот документация по операторам WQL и предложение WQL WHERE

Судя по документации, ваш метод правильный, но ваш синтаксис отключен. Если вы используете PSv3+, я бы посоветовал использовать командлеты CIM, так как WMI технически устарели.

Get-CimInstance -Query 'SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Name LIKE "%ethernet%" OR Name LIKE "%gigabit%"'

В вашем примере:

Get-WmiObject -Class 'Win32_NetworkAdapterConfiguration' -Filter 'Name LIKE "%ethernet%" OR Name LIKE "%gigabit%"' -ComputerName '.'

Кроме того, @Avshalom прав в том, что ваше поле неверно. Вы хотите смотреть на «Описание».

Get-WmiObject -Filter 'Description LIKE "%ethernet%" OR Description LIKE "%gigabit%"' -Class 'Win32_NetworkAdapterConfiguration' -ComputerName '.'
person Maximilian Burszley    schedule 29.11.2017
comment
Спасибо! теперь я разобрался - person Medium; 29.11.2017

Win32_NetworkAdapterConfiguration не имеет свойства Name.

В любом случае, что касается вашего вопроса, вы можете использовать фильтр таким образом, в примере я использую действительное свойство, такое как ServiceName

Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "ServiceName like '%msloop%' or ServiceName like '%tunnel%'"

Кроме того, вам не нужно указывать параметр ComputerName для локального компьютера, он используется по умолчанию.

person Avshalom    schedule 29.11.2017