Может ли WMI запрашивать свойство класса и фильтровать с использованием другого свойства класса?

#wmi #wmic #wmi-query #get-wmiobject

#wmi #wmic #wmi-запрос #get-wmiobject

Вопрос:

Я новичок в WMI. Я использую BGInfo и имею устройство с 2 сетевыми адаптерами. Я пытаюсь запросить IP-адрес одного из сетевых адаптеров. Я хочу отправить запрос на основе имени сетевого адаптера.

Однако я сталкиваюсь с проблемой, когда IP-адрес сохраняется в Win32_NetworkAdapterConfiguration, а имя сетевого адаптера сохраняется в Win32_NetworkAdapter .

Я хочу создать запрос WMI следующим образом:

 SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE Win32_NetworkAdapter.Name="My NIC Name".
  

Возможно ли это?

Ответ №1:

Для базового понимания запустите (из открытого cmd окна) следующие командные строки

 wmic path Win32_NetworkAdapter get DeviceID, Index, InterfaceIndex, Name, NetConnectionId
wmic path Win32_NetworkAdapterConfiguration get Index, InterfaceIndex, IPAddress
wmic path Win32_NetworkAdapterSetting
  

и прочитайте следующую документацию:

  • Класс Win32_NetworkAdapter — представляет сетевой адаптер компьютера под управлением операционной системы Windows (устаревший?),
  • Класс Win32_NetworkAdapterConfiguration — представляет атрибуты и поведение сетевого адаптера,
  • Класс ассоциации WMI Win32_NetworkAdapterSetting class связывает сетевой адаптер и его параметры конфигурации.

Тогда вы можете понять, как работает следующий фрагмент кода (если вы используете реальное значение для _adapterName вместо заполнителя My NIC Name):

 set "_adapterName=My NIC Name"
wmic path Win32_NetworkAdapter where "Name='%_adapterName%'" ASSOC:value /RESULTCLASS:Win32_NetworkAdapterConfiguration 
  

Наконец, вы можете ограничить вывод выше IPAddress=… строки следующим образом:

 wmic path Win32_NetworkAdapter where "Name='%_adapterName%'" ASSOC:value /RESULTCLASS:Win32_NetworkAdapterConfiguration | findstr "^IPAddress"