У меня есть USB-сканер штрихкодов, подключенный к планшету на базе Windows 10. Мне нужно включать/выключать этот сканер штрихкодов с помощью скрипта PowerShell, запущенного в Windows).
Читая документацию Microsoft в Интернете, я пришел к выводу, что devcon.exe — это то, что нужно.
Я установил соответствующий пакет Windows Kits (x64) и могу использовать devcon.exe для поиска устройств, удаления устройств, добавления устройств, получения их статуса и т. д.
Когда дело доходит до запуска «devcon disable» на моем конкретном устройстве, devcon сообщает, что устройство не существует.
Проверив устройство из Windows, мне удалось прочитать идентификатор поставщика (0x065A).
(Я попробовал следующие команды вадминистраторокно PowerShell)
PS C:\Users\Hs> & "C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe" status USB\VID_065A*
USB\VID_065A&PID_A001\6&7998A49&0&3
Name: USB Input Device
Driver is running.
1 matching device(s) found.
Все хорошо
PS C:\Users\Hs> & "C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe" enable USB\VID_065A*
USB\VID_065A&PID_A001\6&7998A49&0&3 : Enabled
1 device(s) are enabled.
Не очень полезно, так как устройство уже работало, но по крайней мере это подтверждает, что devcon может видеть мое устройство.
теперь о проблемной части
PS C:\Users\Hs> & "C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe" disable USB\VID_065A*
USB\VID_065A&PID_A001\6&7998A49&0&3 : Disable failed
No matching devices found.
Есть идеи, что я делаю не так?
решение1
Если вы хотите сделать это в PowerShell без devcon, это довольно просто:
Запустите get-pnpdevice
, чтобы получить список устройств. В вашем примере вы используете instancename, это позволит вам использовать понятное имя. В коде ниже просто измените "USB Input Device" на понятное имя вашего сканера штрихкодов. Скрипт можно обратить, изменив disable на enable.
Get-PnpDevice | Where-Object { $_.FriendlyName -match 'USB Input Device' } | Disable-PnpDevice -Confirm:$false