как отключить все клавиатуры на моих компьютерах

#powershell

#powershell

Вопрос:

Я хочу отключить клавиатуру на своем компьютере, поэтому я использовал этот код:

 get-pnpdevice | where-object {$_.FriendlyName -match 'HID Keyboard Device'} |disable-pnpdevice
 

Но я получаю эту ошибку:

 **disable-pnpdevice : Generic failure**
 

Если я выполню этот код:

 get-pnpdevice | where-object {$_.FriendlyName -match 'HID-compliant mouse'} | DISABLE-PNPDEVICE
 

Я получаю сообщение об ошибке, но мышь на моем компьютере отключена. Я запустил PowerShell от имени администратора. В чем может быть проблема, из-за которой клавиатура не отключается?

Комментарии:

1. Вы уверены, что устройство клавиатуры названо HID Keyboard Device ?

2. Даже если у вас был -PassThru аргумент за Disable-PnpDevice ?

3. я уверен, что клавиатура имеет это имя. я ищу все клавиатуры в классе.

4. Kluk — я не понимаю, что делать

Ответ №1:

Я предполагаю, что у вас более 1 клавиатурного устройства, распознанного вашим компьютером, и одно из них невозможно отключить (по какой-то причине запрещено ОС). И сбой приводит к сбою всего набора каналов.

Я бы рекомендовал попробовать один из них, чтобы посмотреть, помогут ли они…

 Get-PnpDevice -FriendlyName 'HID Keyboard Device' | Disable-PnpDevice -ErrorAction SilentlyContinue
 

Или

 Get-PnpDevice -FriendlyName 'HID Keyboard Device' | % { Disable-PnpDevice -InputObject $_ -ErrorAction SilentlyContinue )
 

Я думаю, что если у вас есть 3 клавиатурных устройства, найденных Get-PnpDevice и вы пытаетесь отключить их с помощью конвейера Disable-PnpDevice , если первое не удается отключить, оно может выйти из всего цикла, не позволяя отключить два других.

Используя -ErrorAction SilentlyContinue , вы сообщаете ему о любых ошибках. Хотя я признаю, я не знаю без тестирования, будет ли он игнорировать ошибку для одного выполнения в цикле или просто проигнорирует сбой всей команды.

Вот почему я предоставил второй вариант, чтобы попробовать запустить отключаемые по отдельности и игнорировать их ошибки.

Комментарии:

1. у меня есть 1 keyborad на моем компьютере. Я попробовал, но это не сработало.

2. На моем компьютере также есть только 1 клавиатура, но Get-PnpDevice команда возвращает 3 клавиатуры, поскольку, вероятно, есть несколько виртуальных клавиатур или устройств с возможностями клавиатуры.

3. get-PnpDevice возвращает мне 9 клавиатур, но статус 8 из них неизвестен.