什麼是用於讓所有裝置連接到特定集線器的 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>Generic USB Hub</code> 和 <code>Generic SuperSpeed USB Hub</code> 顯示子項目的裝置管理員視圖

也許只是我表達事物的方式。許多其他方法都會引發錯誤,所以我進行了研究並看到了這種語法。我最初想到的是使用gwmi命令。無論如何,我知道Device Manager有連接的設備,但上述命令產生了空白螢幕。

WMI Explorer沒有多大幫助。

WMI資源管理器

SELECT使用什麼語句?

答案1

哇! ...WMI Explorer,我已經很多年沒有看到它被使用了。我仍然擁有它,而且其他人也喜歡它。 PowerShellScript-o-Matic 等 8^}

除了WMI Explorer之外還有更好的,都是用PS寫的。查看:

無論如何,至於你的詢問。光靠 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 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

相關內容