首页 > 解决方案 > Powershell - 查找所有 USB 游戏手柄

问题描述

在 Windows 10 中,如果我转到控制面板 --> 设备和打印机,顶行会显示“设备”在我的情况下,这些包括“USB 游戏手柄”、“2.4G 鼠标”等

如何使用 Powershell 查询此设备列表?我想检查一个名为“USB Gamepad”的设备是否连接到 PC。

到目前为止,我已经通过设备管理器路线如下,但无法获得我需要的信息:

$devs = Get-PnPDevice -Class HIDClass | where { $_.HardwareID.Contains("HID_DEVICE_SYSTEM_GAME") }

foreach ($d in $devs){
    echo $d.FriendlyName
    echo $d.DeviceID
    echo $d.HardwareID
    echo $d.Name
    echo $d.Class
    echo ""
    echo ""
}

看起来我可以对注册表中的信息做一些事情@Computer\HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick

标签: powershellwindows-10

解决方案


这个...

Get-PnPDevice -Class HIDClass | 
where { $_.HardwareID.Contains("HID_DEVICE_SYSTEM_GAME") }

...如果在语法上不正确,应该是这样...

... 
where { $PSItem.HardwareID -Contains ...}

比较运算符没有点符号。

我会将该行重构为...

Clear-Host
Get-PnPDevice -Class HIDClass | 
ForEach {
    $PSItem | 
    Where-Object {$PSItem.HardwareID -match 'HID_DEVICE'} | 
    Select-Object -Property FriendlyName, DeviceID, HardwareID, Name, Class
    "`n`n"
} 
# Results
<#
...
FriendlyName : HID-compliant consumer control device
DeviceID     : HID\VID_17A0&PID_0305&MI_03\B&345E789C&0&0000
HardwareID   : {HID\VID_17A0&PID_0305&REV_0207&MI_03, HID\VID_17A0&PID_0305&MI_03, HID\VID_17A0&UP:000C_U:0001, HID_DEVICE_SYSTEM_CONSUMER, 
               HID_DEVICE_UP:000C_U:0001, HID_DEVICE}
Name         : HID-compliant consumer control device
Class        : HIDClass
...
#>

推荐阅读