#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 из них неизвестен.