Каков синтаксис запроса WMI / WQL для подключения всех устройств к определенному USB-концентратору?

Я могу открыть терминал PS и перечислить все устройства-концентраторы USB, например:

 gwmi Win32_UsbHub | fl *

Выходные данные вернут список всех USB-концентраторов в системе. Вот пример одного такого устройства.

Device ID: USB\VID_0451&PID_DD01\6&16FAF918&1&2, PNP Device ID: USB\VID_0451&PID_DD01\6&16FAF918&1&2, Description: Generic SuperSpeed USB Hub
    Availability
    Caption=Generic SuperSpeed USB Hub
    ClassCode
    ConfigManagerErrorCode=0
    ConfigManagerUserConfig=False
    CreationClassName=Win32_USBHub
    CurrentAlternateSettings
    CurrentConfigValue
    Description=Generic SuperSpeed USB Hub
    DeviceID=USB\VID_0451&PID_DD01\6&16FAF918&1&2
    ErrorCleared
    ErrorDescription
    GangSwitched
    InstallDate
    LastErrorCode
    Name=Generic SuperSpeed USB Hub
    NumberOfConfigs
    NumberOfPorts
    PNPDeviceID=USB\VID_0451&PID_DD01\6&16FAF918&1&2
    PowerManagementCapabilities
    PowerManagementSupported
    ProtocolCode
    Status=OK
    StatusInfo
    SubclassCode
    SystemCreationClassName=Win32_ComputerSystem
    SystemName=JMR-ENG-SARAH
    USBVersion

Используя, скажем, PNPDeviceID для этого концентратора, я хотел бы получить все подключенные устройства, если таковые имеются.

Я полностью зеленый с PS и WMI, но я подумал об использовании ASSOCIATES OF следующим образом:

Get-WmiObject Win32_PnPEntity | select "ASSOCIATORS OF {Win32_UsbHub.DeviceID='USB\VID_0451&PID_DD01\6&16FAF918&1&2'}"

Досадно, что в перечислениях не перечисляются родительские и дочерние элементы, хотя диспетчер устройств хорошо отображает список и имеет родительский элемент.

Диспетчер устройств представления <code> Generic USB Hub </code> и <code> Generic SuperSpeed USB Hub </code>, показывающих детей

Может быть, просто так, как я сформулировал вещи. Многие другие способы вызвали ошибку, поэтому я провел исследование и увидел этот синтаксис. Я изначально думал об использовании команды gwmi . В любом случае из Device Manager я знаю, что есть подключенные устройства, но приведенная выше команда выдает пустой экран.

WMI Explorer не сильно помог.

WMI Explorer

Что бы использовать SELECT ?

1 ответ1

0

Вот это да!... WMI Explorer, я не видел, что используется годами. У меня все еще есть это, хотя другим нравится это. PowerShellScript-o-Matic и тому подобное 8 ^}

Вместо WMI Explorer есть лучшие, все написано на PS. Проверять, выписываться:

http://blog.ctglobalservices.com/powershell/kaj/coretech-wmi-and-powershell-browser

https://gallery.technet.microsoft.com/PoweShell-ISE-Addon-CIM-5c9af37a

Во всяком случае, что касается вашего запроса. Не все возможно только с PS. Есть много случаев, когда вы должны использовать реальный код, то есть C #/C/C+/C++, чтобы получить такие вещи.

Многое из того, что вы видите в таких MMC ОС, - это обращения напрямую к некоторому файлу / справочнику по файлам / программам DLL / OCX, который не подвергается непосредственному воздействию PS. Вот почему существует Add-Type, поэтому можно добавить C # / C / C+/ C++, другие языковые конструкции для получения или взаимодействия с тем, что необходимо.

Все это, как говорится ... Это ближе к тому, что вы ищете?

Get-WmiObject -Class Win32_USBControllerDevice | 
%{[wmi]($_.Dependent)} |
Sort Manufacturer,Description,DeviceID |
Format-Table -AutoSize -GroupBy Manufacturer Description,Service,DeviceID

   Manufacturer: (Generic USB Audio)

Description      Service  DeviceID                                     
-----------      -------  --------                                     
USB Audio Device usbaudio USB\VID_047F&PID_C009&MI_00\8&461FC04&0&0000 
USB Audio Device usbaudio USB\VID_17A0&PID_0305&MI_00\9&109E1BB1&0&0000


   Manufacturer: (Standard keyboards)

Description         Service DeviceID                                     
-----------         ------- --------                                     
HID Keyboard Device kbdhid  HID\VID_045E&PID_00DB&MI_00\A&163A9F80&0&0000


   Manufacturer: (Standard monitor types)

Description         Service DeviceID                          
-----------         ------- --------                          
Generic PnP Monitor monitor DISPLAY\ACI2183\C&8538F4&0&UID256 
Generic PnP Monitor monitor DISPLAY\ACI27F6\8&5458763&0&UID256
Generic PnP Monitor monitor DISPLAY\ACI27F6\8&5458763&0&UID257

Или это...

Get-WmiObject Win32_PNPEntity | 
Select Manufacturer,Description,Name,Service,DeviceID

Или увидеть это ...

Командлеты PowerShell для управления устройствами

Этот модуль предоставляет командлеты, которые вызывают функции SetupAPI и предоставляют функции перечисления устройств и управления ими.

https://gallery.technet.microsoft.com/Device-Management-7fad2388

Обновление за комментарий OP

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

UsbTreeView: просмотр USB-устройств и концентраторов, в которых они находятся, в удобной для пользователя форме

http://flow-morewithless.blogspot.com/2014/05/usbtreeview-view-usb-devices-and-hubs.html

Вы не можете получить информацию о соединениях, потому что Microsoft хочет, чтобы эта информация была скрыта. Единственный способ получить информацию о соединении потомок-родитель - это перейти на уровень драйвера.

Проект Visual C, скомпилированный в EXE.

https://github.com/mkielar/get-parent-device

Создать дружественный список имен (хеш-массив Powershell) находится в файле UsbDeviceNames.ps1

$OwnUsbDeviceNames = @{
"USB\VID_04E5&PID_0605\6&13F4C3E&0&6"    = "Hama 4port passive USB hub ( the grey one)";
"USB\VID_1A40&PID_0101\6&DF2EE03&0&5"    = "Deltaco Active Usb 2.0 cable";
"USB\VID_1A40&PID_0101\7&19BC4090&0&1"    = "Delock USB2.0 4port active mini hub (the black round one)";
"USB\VID_0403&PID_6001\FTFSDFHD"        = "FTDI Serial (COM5) to projector";
"USB\VID_0403&PID_6001\FTFXXLHS"        = "FTDI Serial (COM8) to tv";
"Something" = "is nothing"
}

Инструмент PS

https://github.com/MarkoMarjamaa/UsbTreeView

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .