Hyper-V 作为一款强大的企业级虚拟机监控程序表现出色。然而,它对 USB 设备的支持仍然是其主要短板之一。用户原本期望有一个简单易用的“直通”开关,但实际上需要更好的、更实用的策略。
警告:
Hyper-V 没有任何用于 USB 控制器的内置“连接”按钮。因此,Hyper-V 无法在硬件层面将扫描仪、摄像头、加密狗等 USB 设备物理连接到虚拟机。
鉴于 Hyper-V 内置的 USB 直通并不可行,仍有一些间接方法可用:
• USB-over-IP:这种方法使用基于网络的 USB 集线器或第三方软件,将本地设备连接到 V;
• RDP 重定向:这种方法可让你通过远程桌面会话访问本地设备;
• 离线磁盘映射:这种方法通过将 USB 存储以物理磁盘设备的形式呈现给系统来帮助你访问它;
• DDA(离散设备分配):这种方法通过在硬件层面将完整的 PCIe USB 控制器直接分配给虚拟机来实现;
在本文中,我们将解释 Hyper-V 的功能与限制,并比较每种替代方法的优缺点,以帮助你找到适合你工作流程的正确方案。
现在,让我们来谈谈我们承诺的四种变通方法。
方法 1:通过 RDP 进行内置设备重定向
关键目标:
RDP 允许用户快速访问网络连接的虚拟机上的文件和外设设备。诸如网络摄像头和打印机等设备,可通过高级重定向获得最佳性能。低级重定向最适用于依赖专用驱动程序的硬件。管理员使用 usbdevicestoredirect 来设置符合条件的设备类别,并使用组策略集中管理重定向。
远程桌面协议(RDP)为你提供了访问 Hyper-V USB 设备直通的最简便方式。这种替代方法仅适用于 Windows,并且不依赖第三方软件。因此,RDP 方法基本用于打印机、智能卡和闪存驱动器等外设设备。
Hyper-V 会根据用于访问虚拟机的方法,以两种不同方式实现这种方法。让我们在下面讨论它们。
使用 Hyper-V 管理器的增强会话模式
在增强会话模式下,Hyper-V 使用本地资源重定向将主机端设备和服务呈现给 VM 会话,即使没有网络连接也是如此。此方法使用 VMBus 而不是标准 TCP/IP。VMBus 是来宾和主机操作系统之间的专用高吞吐量通信通道。
优点:
- 支持 USB 设备重定向,无需依赖网络连接
- 通过 VMBus 接口实现本地设备重定向以获得低延迟
- 便于连接各种外围设备,例如闪存设备、打印机等。
缺点:
- 它仅支持来宾虚拟机上的 Windows 操作系统。
- 您必须在启动虚拟机之前选择要附加的 USB 设备。
限制
• 仅支持 Windows 来宾操作系统
• 需要 VMBus 和 Hyper-V 管理器,而非传统的 RDP 客户端
• 在 Server Core 安装以及某些加固的企业环境中不可用
系统要求:
主机:Windows 10/11 或 Windows Server 2016+,并已启用增强型会话模式策略。支持在 Windows 10/11 或 Server 2016+ 上运行的 VMConnect。来宾:必须运行 Windows 10/11 或 Server 2016+,并已启用远程桌面。
如何在 Hyper-V 中直通 USB?
1. 在主机计算机上启动 Hyper-V 管理器。然后,右键单击主机名称,并在出现的上下文菜单中选择 Hyper-V 设置。
2. 你可以在设置窗口中找到服务器和用户部分。在服务器面板中选择增强会话模式策略,并勾选允许增强会话模式旁边的复选框。
3. 接下来,在“用户”部分中选择“增强会话模式”并勾选“使用增强会话模式”复选框。单击“确定”以确认并保存更改。
启用增强会话模式后,您现在可以在任何 Hyper-V 虚拟机内访问 USB 设备。
4. 启动 Hyper-V 管理器,并双击虚拟机名称。
5. 要设置虚拟机即将进行的连接,请在弹出菜单中选择“显示选项”
6. 接下来,选择“本地资源”并在“本地设备和资源”下点击“更多”
7. 然后,勾选“其他受支持的即插即用设备”和“我稍后插入的设备”选项,并点击“确定”进行确认。
8. 在“显示”选项卡中勾选相应复选框,将此配置保存用于后续所有连接。
9. 点击“连接”以使修改生效。
使用 PowerShell(主机)
1. 全局启用增强会话模式:
Set-VMHost -EnableEnhancedSessionMode $true
2. 使用 VMConnect 连接并选择本地资源。
使用 MSTSC 的基于 RDP 的设备重定向
当虚拟机具有特定的 IP 地址并可在网络上访问时,可以使用标准的远程桌面连接客户端(mstsc.exe)来建立连接。此方法无需使用 Hyper-V 管理器即可运行。
优点:
- 在网络上工作时使用标准 RDP 客户端
- 不依赖 Hyper-V 管理器运行
- 适用于远程访问环境
缺点:
- RDP 会话终止后,USB 设备会立即被释放
- 性能高度依赖于网络延迟和可用带宽
限制:
• 依赖已分配的 IP 地址和活动的网络连接
• 仅允许即插即用设备
• 在非活动 RDP 会话期间不提供持久的 USB 访问
最低系统要求:
Guest:必须安装 Windows,并启用远程桌面且可通过网络访问。
Client:需要支持必要重定向的 RDP 客户端,并且底层 USB 重定向仅限 Windows 客户端。
如何激活
1. 您需要在您的虚拟机上提供远程桌面连接访问权限。连接到您的虚拟机,并在控制面板中查找“系统和安全”选项。点击“允许远程访问”
2. 确保已勾选“允许远程连接到此计算机”和“允许远程协助连接到此计算机”复选框,然后在“系统属性”窗口的“远程”选项卡中单击“确定”已勾选“允许远程连接到此计算机”和“允许远程协助连接到此计算机”复选框
3. 按 Win + R 启动“运行”程序,并在文本框中输入 mstsc.exe。按 Enter 运行“远程桌面连接”应用程序。
4. 单击“显示选项”按钮以展开 RDC 对话框。
5. 打开本地资源选项卡,并在本地设备和资源部分中单击“更多”
6. 在出现的菜单中,启用“其他支持的即插即用 (PnP) 设备”复选框。单击“确定”
7. 返回到“常规设置”选项卡,并使用其用户名和 IP 地址连接到你的虚拟机。
8. 要启动您的远程桌面会话,请点击“连接”
9. 登录到 VM 并检查在文件资源管理器中是否显示已添加的 USB 设备。
方法 2:使用 USB Network Gate 进行 USB-over-IP 透传
关键目标:
USB Network Gate 作为一款跨平台解决方案脱颖而出,适用于设备访问受限的 Linux 来宾虚拟机(VM)和 Server Core 系统。它可独立于 Hyper-V 运行,并且不需要进行虚拟机监控程序配置。
网络级 USB 重定向(Hyper-V)使得物理连接在一台计算机上的 USB 设备能够通过局域网(LAN)被另一台计算机使用。在 Hyper-V 虚拟机内部,USB 设备会像直接插入系统一样显示,因此你可以照常使用它而不会察觉任何差异。
这种方法独立于 Hyper-V 工作,无需修改虚拟机监控程序即可使用。它通过 TCP/IP 传输 USB 流量,使该方法非常适合各种 Hyper-V USB 设备连接。
USB Network Gate 让每一种 USB 设备(包括智能卡、网络摄像头、打印机、U 盘、加密狗等)都能与 Hyper-V 虚拟机建立通信。USB-over-IP 方法常用于以 Server Core 方式部署的 Hyper-V 主机上,在这种环境中与设备的直接交互会受到限制。
USB Network Gate 是 Linux 用户在保持完整功能支持与一致性能的同时连接专用硬件的唯一合适方式。
USB Network Gate 以客户端-服务器解决方案的形式工作,使你能够将服务器端主机系统上的物理 USB 设备访问权限提供给客户端远程 PC 或虚拟机。此客户端-服务器架构让 Hyper-V VM 无论物理距离多远,都能像设备直接连接到系统一样使用远程设备。
优点:
- 适用于几乎任何 USB 设备
- 跨平台支持
- 无需进行 Hyper-V 配置
缺点:
- 需要安装第三方软件
- 增加运营和许可开销
限制:
• 需要稳定的网络连接
• 会引入网络延迟,可能影响实时设备
• 不是 Hyper-V 原生功能(USB-over-IP 架构)
最低系统要求:
兼容 Windows 7 SP1+ 及更高版本(包括 Server 2008 R2+)macOS 10.14+、Linux(Ubuntu 和 CentOS)Android 5.0+ 以及 Raspberry Pi OS。
要使用 USB Network Gate,请在主机和虚拟机上都安装它,并确保有可用的稳定网络连接。
如何通过网络在 Hyper-V 中使用 USB 设备
1. 在主机和客户端计算机上都安装 USB Network Gate。
2. 打开应用并共享连接到 Hyper-V 主机的 USB 设备。
3. 在操作虚拟机时,打开应用并找到共享的 USB 设备。
4. 点击连接。
您可以在以下视频中找到有关通过网络将 USB 设备附加到 Hyper-V 来宾机的详细说明:
使用 USB Network Gate 挂载并访问Hyper-V USB 设备到虚拟机既简单又快速且方便。
方法 3:在 Hyper-V 中使用 SCSI 直通访问物理磁盘
关键目标:
此方法的主要目标是让虚拟机直接且独占访问一个 rw USB 磁盘,从而确保主机不会干扰该设备。这种方法非常适用于数据迁移、无 VHDX 的恢复,以及将 USB 驱动器快速连接到虚拟机。
Hyper-V 允许你将 USB 存储设备提供给虚拟机,就像它们是物理磁盘一样。在这种架构中,它使用 SCSI 控制器将 USB 设备从主机断开连接,并将其直接连接到虚拟机(VM)
许多用户经常将此方法误认为是 Hyper-V 的 USB 直通。尽管相同,但这种方法仅适用于大容量存储设备。
优点:
- 适用于 Linux 和 Windows Hyper-V 虚拟机用户,运行良好
- 您将获得管理 USB 存储设备访问权限的能力
缺点:
- 设置过程具有挑战性
- 仅适用于在操作过程中不可移除的 USB 大容量存储设备
- USB 存储设备可以连接到主机或虚拟机,但不能同时连接到两者
限制:
• 仅支持 USB 存储设备,例如外置硬盘或闪存盘
• USB 设备以驱动器形式呈现,而不是作为标准 USB 硬件
• 主机和虚拟机不能同时使用该设备
• 设备在使用中时并不总是能移除
• 不适用于扫描仪、加密狗、网络摄像头、HID 设备或智能卡
最低系统要求:
需要 Windows 10/11 或 Windows Server 上的 Hyper-V,另外还需要在主机上将一块附加磁盘配置为脱机,且目标磁盘不能是主机操作系统磁盘。
如何激活
1. 启动“磁盘管理”应用。为此,请从“开始”上下文菜单中打开“磁盘管理”或者,按 Win + R 打开“运行”程序并打开 diskmgmt.msc。
2. 由于主机和 VM 无法同时访问 USB 驱动器,您需要先在主机上将 USB 驱动器设置为脱机。要将 USB 驱动器设置为脱机,请在“磁盘管理”中列出的设备中找到它,右键单击并选择“脱机”选项。
3. 现在主机操作系统无法直接访问 USB 存储,你可以启用 Hyper-V USB 直通。只需打开 Hyper-V 管理器,右键单击需要访问的虚拟机,并在上下文菜单中选择“设置”
4. 在设置菜单左侧找到 SCSI 选项卡并点击它。接下来,在硬盘选项下点击“添加”
5. 在左侧菜单中选择 SCSI 控制器 > 硬盘下的“物理硬盘”选项,然后选择 USB 驱动器。确保所选驱动器的磁盘编号必须与您在“磁盘管理”中设置为脱机的磁盘一致。单击“确定”以保存更改。
添加驱动器后,启动您的 Hyper-V 虚拟机的文件资源管理器。现在应可在虚拟机内看到 USB 存储驱动器。
在主机上使用 PowerShell
- 在主机上检测 USB 磁盘并将其设置为脱机。
Get-Disk | Where-Object BusType -eq USB
Set-Disk -Number <DiskNumber> -IsOffline $true
2. 使用磁盘编号将脱机的物理磁盘附加到虚拟机。
Add-VMHardDiskDrive -VMName “<VMName>” -ControllerType SCSI -DiskNumber <DiskNumber>
方法 4:使用离散设备分配 (DDA) 在 Hyper-V 中启用 USB 直通
主要目的
DDA 通过将 PCIe USB 控制器专用于虚拟机来提供近乎实时的 USB 直通,从而实现低级别访问和厂商驱动程序。该设备会从主机中移除,而虚拟机则获得基本接近原生的性能和完整的驱动程序兼容性。当 RDP 重定向无法满足 USB 设备的协议和驱动程序要求时,此技术是一种可行的替代方案。
优点:
- 近乎实时的硬件直通
- 为 USB 设备提供专用控制器的卓越性能和兼容性
- 适用于需要供应商驱动程序的专用硬件(加密狗、实验室设备、安全密钥)
缺点:
- 需要高级技能
- 分配给虚拟机时无法从主机访问该设备
- 添加设备时需要重新启动虚拟机
限制:
• 设备已分配时不支持 VM 保存/还原、不支持实时迁移、不支持动态内存
• 仅适用于带 Hyper-V 的 Windows Server 2016/2019/2022/2025 — 在 Windows 10/11 家庭版中不可用
• 需要 Gen2 VM
• 并非所有 PCIe USB 控制器都兼容 — 请使用微软的 DDA 脚本进行验证
最低系统要求:
支持的 OS: 带 Hyper-V 的 Windows Server 版本,例如 2016、2019、2022 和 2025
硬件:需要 CPU 支持 EPT/NPT,并需要具备中断和 DMA 重映射的 IOMMU,同时需在 BIOS/固件中启用这些功能的设置(类似于 SR-IOV 要求)
如何使用 DDA 将 USB 控制器直通到 Hyper-V 虚拟机
收集信息并准备环境:
- 确认 DDA 要求:你需要 Windows Server Hyper-V,以及支持 IOMMU/ACS 和设备隔离的硬件。查看 DDA 规划指南,了解设备已附加时的限制。
- 查找控制器的位置路径:在主机上打开设备管理器 → 展开 通用串行总线控制器 → 选择要专用的 USB 控制器 → 详细信息 选项卡 → 属性:位置路径 → 复制 PCIROOT(…) 字符串。
使用 PowerShell 分配控制器(VM 必须处于关闭状态)
(可选)为 VM 调整 MMIO 大小:
$vm = “<VMName>”
Set-VM -Name $vm -LowMemoryMappedIoSpace 3GB -HighMemoryMappedIoSpace 33280MB
从主机卸载控制器并分配给 VM:
$loc = “<PCIROOT(…from Device Manager…)>”
Dismount-VMHostAssignableDevice -LocationPath $loc -Force
Add-VMAssignableDevice -VMName $vm -LocationPath $loc
启动 VM,并在来宾系统中按需安装厂商驱动程序。
要还原:
Remove-VMAssignableDevice -VMName $vm -LocationPath $loc
Mount-VMHostAssignableDevice -LocationPath $loc
结论
尽管 Hyper-V 没有一键式的内置 USB 直通切换开关,但它会根据你的操作系统和硬件需求提供其他灵活的替代方案。为了为你的具体工作流程选择最合适的方法,我们对本文讨论的替代方法提供了一个快速总结。
| 方法 | 最适合 | 支持的设备 | 来宾操作系统 | 设置复杂度 |
| USB Network Gate | 专业用途 | 几乎任何设备(加密狗、摄像头等) | Windows、Linux、macOS | 低 |
| 物理磁盘(SCSI) | 大容量存储 | 仅外置 HDD、U 盘 | Windows、Linux | 中 |
| 增强会话 | 本地管理员工作 | 基本即插即用设备,例如 U 盘 | 仅 Windows | 低 |
| RDP 重定向 | 远程访问 | 受限的即插即用设备 | 仅 Windows | 低 |
| DDA | 企业 / 高级用户 | USB 控制器(PCIe) | Windows Server | 高 |
了解这些差异有助于你节省时间,并避免反复试错带来的挫败感。无论你想要基于网络的 USB 访问所带来的灵活性,还是增强会话模式的简便性,你现在都可以使用这些工具,将你的物理设备与 Hyper-V 虚拟环境连接起来。
常见问题
不,Hyper-V 不包含内置的 USB 直通选项。你只能通过一些变通方法将 USB 设备连接到 VM,例如 SCSI 磁盘直通、USB Network Gate 等第三方软件、DDA、增强会话模式或 RDP 重定向。
是的,可以通过 USB Network Gate(USB-over-IP)和 DDA 等方法在 Hyper-V 虚拟机中使用 USB 加密狗。由于驱动程序限制,RDP 重定向可能无法适用于所有设备类型。
Hyper-V 中的离散设备分配 (DDA) 允许将整个 PCIe USB 控制器专用于虚拟机。当通过 DDA 分配控制器时,主机将无法再访问它,并且此功能仅在 Windows Server 及更高版本中可用。
增强会话模式通过 VMBus 将 RDP 经由 VMConnect 路由,而不是使用传统的网络连接。即使未为 VM 分配 IP 地址,它也能继续工作。通过 mstsc.exe 的标准 RDP 仅在可通过网络访问 VM 时才有效。
是的,不过其功能有限。Windows 10 和 11 支持 RDP 重定向和增强会话模式。仅 Windows Server 支持 DDA。当您需要在 Windows 10 和 11 上获得完整的跨设备支持时,USB Network Gate 是最实用的选择。