Powershell - Найдите все USB-геймпады - PullRequest
0 голосов
/ 06 августа 2020

В Windows 10, если я go перехожу в Панель управления -> Устройства и принтеры, верхняя строка показывает мне «устройства». В моем случае это «USB Gamepad», «2.4G Mouse» и т. Д. c

Как я могу запросить этот список устройств с помощью Powershell? Я хочу проверить, подключено ли устройство под названием «USB Gamepad» к P C.

До сих пор я использовал маршрут диспетчера устройств следующим образом, но не смог получить необходимую мне информацию:

$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

1 Ответ

0 голосов
/ 06 августа 2020

Это ...

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
...
#>
...