WQL Query para obter todos os dispositivos conectados a um hub específico

0

Qual é a sintaxe da Consulta WMI / WQL para conectar todos os dispositivos a um hub USB específico?

Eu posso abrir um terminal PS e enumerar todos os dispositivos USB Hub, como tal:

 gwmi Win32_UsbHub | fl *

A saída retornará uma lista de todos os dispositivos USB Hub no sistema. Aqui está uma amostra de um desses dispositivos.

Device ID: USB\VID_0451&PID_DD01&16FAF918&1&2, PNP Device ID: USB\VID_0451&PID_DD01&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&16FAF918&1&2
    ErrorCleared
    ErrorDescription
    GangSwitched
    InstallDate
    LastErrorCode
    Name=Generic SuperSpeed USB Hub
    NumberOfConfigs
    NumberOfPorts
    PNPDeviceID=USB\VID_0451&PID_DD01&16FAF918&1&2
    PowerManagementCapabilities
    PowerManagementSupported
    ProtocolCode
    Status=OK
    StatusInfo
    SubclassCode
    SystemCreationClassName=Win32_ComputerSystem
    SystemName=JMR-ENG-SARAH
    USBVersion

Usando o PNPDeviceID para esse hub, gostaria de obter todos os dispositivos conectados, se houver.

Eu sou totalmente ecológico com o PS e o WMI, mas pensei em usar ASSOCIATES OF da seguinte forma:

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

Irritantemente, as enumerações não listam pai e filhos, embora o Gerenciador de Dispositivos liste coisas muito bem e tenha um pai.

Talvezdojeitoqueeuexpressavaascoisas.Muitasoutrasformasderamumerro,entãoeupesquiseieviessasintaxe.Eupenseioriginalmenteemusarocomandogwmi.Dequalquerforma,euseideDeviceManagerqueexistemdispositivosconectados,masocomandoacimarendeuumatelaembranco.

WMIExplorernãoajudoumuito.

Qual seria a instrução SELECT a ser usada?

    
por Sarah Weinberger 17.08.2018 / 22:53

1 resposta

0

Uau! ... WMI Explorer, eu não vi isso usado em anos. Eu ainda tenho isso, e outros gostam disso. PowerShellScript-o-Matic e afins 8 ^}

Existem os melhores em vez do WMI Explorer, todos escritos em PS. Confira:

link

link

De qualquer forma, como você consulta. Nem todas as coisas são possíveis apenas com o PS. Há muitos casos em que você tem que usar o código real, ou seja, C # / C / C + / C ++ para obter esse tipo de coisa.

Muito do que você vê nesses MMCs do sistema operacional são chamadas diretamente para alguma referência de arquivo / programação DLL / OCX, que não é diretamente exposta para o PS agir diretamente. É por isso que o Add-Type existe, portanto, pode-se adicionar C # / C / C + / C ++, outras construções de linguagem para obter ou interagir com o que é necessário.

Tudo o que foi dito ... É isso, mais perto do que você procura depois?

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&461FC04&0&0000 
USB Audio Device usbaudio USB\VID_17A0&PID_0305&MI_00&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&5458763&0&UID256
Generic PnP Monitor monitor DISPLAY\ACI27F6&5458763&0&UID257

Ou isso ...

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

Ou veja isso ...

Device Management PowerShell Cmdlets

This module exposes cmdlets that calls into SetupAPI functions and provides device enumeration and management functions.

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

Atualização por comentário do OP

De acordo com o meu comentário para você. Isso deve ser útil para o que você está procurando. Você pode ler o artigo inteiro, é curto, mas acrescentei os pontos principais aqui.

UsbTreeView : View Usb devices and hubs they are in in a user friendly form

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

you cannot get information about the connections because Microsoft wants that information to be hidden Only way to get the child-parent-connection information would be to to go to driver level.

A Visual C project compiled to an EXE.

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

Create a friendly name list (Powershell hash array) is in file UsbDeviceNames.ps1

$OwnUsbDeviceNames = @{
"USB\VID_04E5&PID_0605&13F4C3E&0&6"    = "Hama 4port passive USB hub ( the grey one)";
"USB\VID_1A40&PID_0101&DF2EE03&0&5"    = "Deltaco Active Usb 2.0 cable";
"USB\VID_1A40&PID_0101&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"
}

The PS tool

https://github.com/MarkoMarjamaa/UsbTreeView

    
por 20.08.2018 / 00:30