Windows 认不出的 USB 设备
读懂错误代码、找出端口属于哪个控制器,并在重装任何东西之前先解决电源管理问题。
测试环境Pro (26H2) / Server · 版本号 26300.9457 / 26100.33650 · x64
E1- 版本号
- 26300.9457 / 26100.33650
- 版本
- Pro (26H2) / Server
- 架构
- x64
- 支持
- 文档(E1)
- 证据
- E1官方文档
- 核验日期
- 2026-10-29
- 页面类型
- 排障
“USB 设备无法识别”是症状,四种常见原因按概率排列:
- 电源管理挂起了集线器或设备。
- 端口/控制器问题——Hub、前面板跳线,或共用控制器。
- 线材或接口——充电线、磨损的接口。
- 驱动——只有设备能枚举但没驱动时才成立。
从第 1 条开始。多数“USB 坏了”其实是电源设置。
Get-PnpDevice | Where-Object Status -ne 'OK' | Select-Object FriendlyName,Status,Class,InstanceId,Problem,ProblemDescription| 代码 | 含义 | 第一步 |
|---|---|---|
| 代码 10 | 无法启动 | 驱动或供电 |
| 代码 43 | 报告失败 | 复位设备、换线、换口 |
| 代码 28 | 未安装驱动 | 装厂商驱动 |
| 代码 45 | 当前未连接 | 重插、换口 |
| 代码 31 / 32 | 驱动加载失败 | 重装驱动 |
InstanceId 能看出拓扑:设备的 USB\VID_xxxx&PID_yyyy\...,控制器的 USB\ROOT_HUB30\...。
先排除电源管理
Section titled “先排除电源管理”Get-CimInstance -Namespace root\wmi -ClassName MSPower_DeviceEnable | Where-Object Enable -eq $true | Select-Object InstanceName,Enable然后逐个在设备管理器 → 通用串行总线控制器 → 集线器 → 电源管理里取消“允许计算机关闭此设备以节约电源”——设备本身也要同样处理。
对负载下掉线的设备(移动 SSD、采集卡),这一条常常就能解决。
找出端口属于哪个控制器
Section titled “找出端口属于哪个控制器”USB 口按控制器分组,控制器共享带宽。
Get-CimInstance Win32_USBController | Select-Object Name,DeviceIDGet-CimInstance Win32_USBControllerDevice | ForEach-Object { [wmi]($_.Dependent) } | Select-Object Name,DeviceID在设备管理器 → 查看 → 依连接排序设备里展开控制器,插拔时看设备出现在哪个端口下。换到另一个控制器,是“两个设备互相打架”最便宜的解法。
- 仅充电线没有数据线。能充手机,其他全废。
- USB-C 转 USB-C 线在功率与数据规格上不同——一根 60W 充电线可能只有 USB 2.0 数据。
- 磨损的接口接触不良;换同一台机器的另一个口试试。
什么时候真的是驱动
Section titled “什么时候真的是驱动”只有在设备能够枚举之后(设备管理器里有名字,而不是“未知设备”):
- 记下硬件 ID:
Get-PnpDevice -Status Error | Select-Object InstanceId。 - 针对该 ID 找厂商驱动。
- 卸载设备(有“删除驱动程序软件”就勾上),重启,安装。
E1。USB 枚举与电源管理有微软文档依据。实验室虚拟机只暴露虚拟 USB 设备,因此未复现控制器级故障。