disable/enable 使用 InstanceID 的 PnP 设备的脚本 - 但 ID 在重新启动时发生变化

Script to disable/enable PnP Device using InstanceID's - but the ID's change upon reboot

我有一个工作脚本可以使用各自的 InstanceID 禁用 4 个 USB 游戏杆

$pnpIds = 'HID\VID_0079&PID_0006&1699A0E&198&0000', 'HID\VID_0079&PID_0006&5438EB5&19D&0000', 'HID\VID_0079&PID_0006&390C5738&17D&0000','HID\VID_0079&PID_0006&2652A693&16C&0000'

foreach ($pnpId in $pnpids) {
Disable-PnpDevice -InstanceId $pnpId -Confirm:$false

}

执行时工作正常,问题是重启后 ID 发生变化.. 最后在“&”字符之间只有 3 个字符发生变化 (HID\VID_0079&PID_0006&1699A0E&198&0000 其余的保持不变。无论如何要为这 3 个字符使用通配符?

如果没有,是否有办法编写一个脚本来获取 USB 游戏杆的当前 InstanceID,然后 disable/enable 使用我当前使用的脚本获取它们?离我太远了..

这是来自 Super User 的 Capt. Whale 的解决方案。谢谢!

 $pnpIds = 
  'HID\VID_0079&PID_0006&1699A0E&*&0000',
  'HID\VID_0079&PID_0006&5438EB5&*&0000',
  'HID\VID_0079&PID_0006&390C5738&*&0000',
  'HID\VID_0079&PID_0006&2652A693&*&0000'
  foreach ($pnpId in $pnpids) {
  Get-PnpDevice -InstanceID $pnpId | 
    Where Status -Like 'OK' |
      Disable-PnpDevice -Confirm:$false

}

启用- Enable-PnPDevice

然后将-Where Status -Like 'OK' 替换为-Where Status -Like 'Error'

设备的状态将是 'error',因为它已断开连接。

Link 到解决方案的原始线程 - https://superuser.com/questions/1682707/script-to-disable-enable-pnp-device-using-instanceids-but-the-ids-change-upo