
And now that confirmation interaction isn't needed I could remove the one-at-a-time loop, but there seems to be no significant gain or loss there. The code as-is would enable a manually-disabled USB Controller, and it could be smarter than that. If I were to extend this (I may not as it meets my immediate needs as-is) I would improve the match-the-USB-controller logic and possibly the "is it broken?" logic.

u/Verb-Noun also suggested in comments running this automatically upon wake. If (-not (::GetCurrent()).IsInRole( "Administrator")) | I threw in some code to self-elevate, and here we are with a working script that may need some tweaking for wider use: # Escalate privileges if not admin At first I found this module, then while looking for a newer one (it's from 2012) I realized Win10 (and Win8, Server 2012 and later) has appropriate cmdlets built-in now.

So I finally looked into scripting the reset. VIA XHCI Host Controller: - VL800 - VL805 - VL806 - VL808 - VX11 - CND001 - CND003 USB 3.0 Driver Versions: - Port Driver (Xhcdrv.sys). But that was still a pain, especially without use of the mouse. At first I was rebooting to fix, then realized it was the USB controller that wasn't working and could bounce it via device manager.

My 5.5-year-old laptop as recently started frequently having the mouse not work after coming out of sleep.
