У меня есть рабочий скрипт для отключения 4 usb-джойстиков с использованием их соответствующих идентификаторов InstanceID
$pnpIds = 'HID\VID_0079&PID_0006\7&1699A0E&198&0000', 'HID\VID_0079&PID_0006\7&5438EB5&19D&0000', 'HID\VID_0079&PID_0006\7&390C5738&17D&0000','HID\VID_0079&PID_0006\7&2652A693&16C&0000'
foreach ($pnpId in $pnpids)
Disable-PnpDevice -InstanceId $pnpId -Confirm:$false
}
При выполнении все работает нормально, проблема в том, что при перезагрузке ID меняются... только 3 символа меняются в конце между символами "&" (HID\VID_0079&PID_0006\7&1699A0E&198&0000 Остальное остается неизменным. Как использовать подстановочные знаки для этих 3 символов? Он использует буквы и цифры.
Если нет, есть ли способ написать скрипт, который будет получать текущие InstanceID для USB-джойстиков, а затем отключать/включать их с помощью скрипта, который я сейчас использую? Я не в своей тарелке...
Вы можете! Лучше всего начать просто с Get-PnpDevice
, чтобы убедиться, что вы выбираете только те устройства, которые ожидаете:
# use * as a wildcard
Get-PnpDevice -InstanceId 'HID\VID_0079&PID_0006\7&1699A0E&*&0000'
# example output on my PC:
Status Class FriendlyName InstanceId
------ ----- ------------ ----------
OK Keyboard HID Keyboard Device HID\VID_0079...
OK Mouse HID-compliant mouse HID\VID_0079...
Затем вы можете использовать практически тот же сценарий (я догадываюсь, где используется подстановочный знак):
$pnpIds =
'HID\VID_0079&PID_0006\7&1699A0E&*&0000',
'HID\VID_0079&PID_0006\7&5438EB5&*&0000',
'HID\VID_0079&PID_0006\7&390C5738&*&0000',
'HID\VID_0079&PID_0006\7&2652A693&*&0000'
foreach ($pnpId in $pnpids) {
Get-PnpDevice -InstanceID $pnpId |
Where Status -Like 'OK' |
Disable-PnpDevice -Confirm:$false
}
Вы не можете использовать подстановочный знак в Disable-PnpDevice
, но он отключит любое устройство (устройства), подключенное к нему, включая списки из нескольких устройств, поэтому будьте осторожны, чтобы случайно ничего не отключить.
Get-PnpDevice
Также можно использовать подстановочный знак для поиска по -FriendlyName
или -Class
, если это проще.