devcon.exe não pode desativar o dispositivo USB

devcon.exe não pode desativar o dispositivo USB

Eu tenho um leitor de código de barras USB conectado a um tablet Windows 10. Preciso ligar/desligar este leitor de código de barras a partir de um script do PowerShell em execução no Windows).

Lendo o documento da Microsoft on-line, parece que devcon.exe é o caminho a percorrer.

Instalei o pacote de kits do Windows apropriado (x64) e consigo usar o devcon.exe para localizar dispositivos, remover dispositivos, adicionar dispositivos, obter seu status, etc.

Quando se trata de executar um "desativar devcon" em meu dispositivo específico, o devcon diz que o dispositivo não existe.

Inspecionando o dispositivo no Windows, consegui ler o ID do fornecedor (0x065A)

(Eu tentei os seguintes comandos em umadministradorjanela do 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.

Tudo certo

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.

Não é muito útil porque o dispositivo já estava funcionando, mas pelo menos confirma que o devcon pode ver meu dispositivo

agora para a parte problemática

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.

Alguma idéia do que estou fazendo de errado?

Responder1

Se você quiser fazer isso no PowerShell sem devcon, é bem simples:

Execute get-pnpdevicepara obter uma lista dos dispositivos. Você está usando o nome da instância em seu exemplo, isso permitirá que você use o nome amigável. No código abaixo, basta alterar onde diz "Dispositivo de entrada USB" para qualquer nome amigável do seu leitor de código de barras. O script pode ser revertido alterando desativar para ativar.

Get-PnpDevice | Where-Object { $_.FriendlyName -match 'USB Input Device' } | Disable-PnpDevice -Confirm:$false

informação relacionada