모든 장치를 특정 허브에 연결하는 WQL 쿼리란 무엇입니까?

모든 장치를 특정 허브에 연결하는 WQL 쿼리란 무엇입니까?

모든 장치를 특정 USB 허브에 연결하는 WMI/WQL 쿼리 구문은 무엇입니까?

다음과 같이 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>일반 USB 허브</code> 및 <code>일반 SuperSpeed ​​USB 허브</code>의 장치 관리자 보기

어쩌면 내가 표현한 방식과 똑같을 수도 있습니다. 다른 여러 가지 방법으로 오류가 발생했기 때문에 조사를 통해 이 구문을 확인했습니다. 원래는 명령을 사용하려고 생각했습니다 gwmi. 어쨌든 Device Manager연결된 장치가 있다는 것을 알고 있지만 위 명령을 실행하면 빈 화면이 나타납니다.

WMI Explorer별로 도움이 되지 않았습니다.

WMI 탐색기

SELECT어떤 진술을 사용해야 합니까 ?

답변1

와우!... WMI 탐색기, 몇 년 동안 사용되는 것을 본 적이 없습니다. 그래도 나는 그것을 가지고 있고 다른 사람들은 그것을 좋아합니다. PowerShellScript-o-Matic 등 8^}

WMI Explorer 대신 PS로 작성된 더 나은 것들이 있습니다. 확인해 보세요:

어쨌든, 당신은 질문합니다. PS만으로는 모든 것이 가능한 것은 아닙니다. 이런 종류의 코드를 얻으려면 실제 코드, 즉 C#/C/C+/C++를 사용해야 하는 경우가 많이 있습니다.

이러한 OS의 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 Cmdlet

이 모듈은 SetupAPI 기능을 호출하고 장치 열거 및 관리 기능을 제공하는 cmdlet을 노출합니다.

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는 해당 정보를 숨기기를 원하기 때문에 연결에 대한 정보를 얻을 수 없습니다. 하위-상위 연결 정보를 얻는 유일한 방법은 드라이버 수준으로 이동하는 것입니다.

EXE로 컴파일된 Visual C 프로젝트입니다.

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

관련 정보