Một trong những nhược điểm đáng kể của Hyper-V so với các hypervisor khác (ví dụ, VMWare ESXi hoặc Proxmox) là thiếu tính năng chuyển hướng thiết bị USB từ host đến máy ảo. Kể từ phiên bản Hyper-V 2012 R2, đã có một số thay đổi về tùy chọn USB Passthrough, nhưng chức năng này vẫn kém hơn so với đối thủ. Trong bài viết này, chúng ta sẽ thảo luận về các cụ thể của USB redirection trong Hyper-V.
Tổng quan về Hyper-V USB Passthrough
USB passthrough đề cập đến khả năng chuyển hướng thiết bị USB từ host hypervisor vật lý (hoặc qua mạng từ server/thiết bị khác) đến máy ảo. Sử dụng USB passthrough, bạn có thể chuyển hướng USB stick, token, USB dongle, modem, hoặc bất kỳ thiết bị nào kết nối với cổng USB vật lý của host đến máy ảo.
Tin xấu là Hyper-V không hỗ trợ USB passthrough đầy đủ tính năng. Bạn không thể chuyển hướng thiết bị USB tùy ý từ host vật lý đến máy ảo (VMWare tốt hơn nhiều với điều này — xem bài USB passthrough in VMWare ESXi). Có một số tùy chọn tích hợp sẵn để sử dụng thiết bị USB bên ngoài trong Hyper-V VM, nhưng tất cả đều có hạn chế đáng kể. Hiện tại, bạn có thể dùng các cách sau để chuyển hướng thiết bị USB đến Hyper-V virtual machine.
- Chuyển hướng ổ USB từ Hyper-V host;
- Enhanced Session Mode trên Hyper-V Console;
- USB Redirection qua RDP;
- Sử dụng giải pháp phần mềm/phần cứng để chuyển hướng USB qua mạng (USB over IP).
Kịch bản cuối cùng liên quan đến việc dùng giải pháp bên thứ ba để triển khai USB over IP. Nó có thể là USB hub mạng, giải pháp phần mềm chuyển hướng thiết bị USB qua mạng TCP/IP từ server khác. Hầu hết các giải pháp thương mại phổ biến đều trả phí (AnywhereUSB, DigiUSB). Miễn phí bao gồm VirtualHere USB (miễn phí cho một USB dongle và một target server) và dự án open source khá cũ usbip.sourceforge.net (phần server triển khai trên Linux, client có thể cài trên Windows).
Truy cập ổ cứng USB từ Hyper-V Virtual Machine
Bạn có thể chuyển hướng ổ USB gắn vào host trực tiếp vào bất kỳ Hyper-V virtual machine đang chạy nào. Hãy xem cách cho Hyper-V virtual machine truy cập trực tiếp vào ổ USB của host.
Lưu ý.- Hướng dẫn này chỉ hoạt động cho ổ USB được hệ thống nhận diện là fixed. Bạn không thể chuyển hướng đến VM theo cách này USB flash drive, smart card và thiết bị removable khác (mặc dù có một thủ thuật nhỏ để làm Windows nhận thiết bị removable như fixed hard drive).
- Đối với các ổ này, bạn không thể tạo snapshot/checkpoint.
- Kết nối ổ USB bên ngoài vào Hyper-V host (có thể là bất kỳ host nào cài Windows và vai trò Hyper-V, hoặc Free Microsoft Hyper-V Server). Ổ sẽ xuất hiện trong hệ thống và ký tự ổ sẽ được gán cho nó (nếu ký tự ổ chưa được gán, xem bài viết);
- Mở console Disk Management (
diskmgmt.msc), chuột phải vào ổ (trong ví dụ của chúng tôi, ID của ổ USB 20 GB là Disk 1) và chọn Offline.
Nếu bạn dùng Windows Server Core hoặc Hyper-V Server, không có một số snap-in mmc đồ họa, bạn có thể quản lý ổ đĩa cục bộ dùng module PowerShell Disk Management. Các lệnh sau liệt kê ổ đĩa vật lý trên host và đưa ổ chỉ định offline:
Get-Disk
Get-Disk -Number 1 |Set-Disk -IsOffline:$true

- Chạy Hyper-V Manager và mở thuộc tính máy ảo cần kết nối ổ USB. Trong phần SCSI Controller, thêm ổ đĩa mới, chỉ định rằng nó là vật lý (Physical hard disk). Trong menu drop-down chọn ổ USB của bạn (sẽ trông như: Disk 1 20.00 Gb Bus 0 Lun 0 Target 1). Lưu ý. Bạn không cần tắt máy ảo để thêm ổ cứng SCSI. Đối với thiết bị SCSI, hot-add và hot-remove ổ được hỗ trợ.

- Bây giờ chúng ta sẽ chỉ cách truy cập ổ USB trên Hyper-V host từ guest OS của máy ảo chạy Windows. Mở console máy ảo hoặc kết nối qua RDP. Đăng nhập vào guest OS. Chạy Disk Manager. OS nên thấy ổ mới. Nếu nó offline, chuột phải vào nó và chọn Online. Lúc này, không có ký tự ổ hoặc mount point được gán cho phân vùng trên ổ USB. Để sửa, chuột phải vào phân vùng trên ổ và chọn "Change Drive Letter and Paths" từ menu ngữ cảnh. Gán ký tự ổ trống bất kỳ cho phân vùng hoặc chỉ định mount point.

Đó là tất cả! Bạn đã kết nối trực tiếp ổ USB bên ngoài vào Hyper-V virtual machine và giờ có thể sử dụng nó.
Quan trọng. Để ngăn mất dữ liệu, trước khi bạn tháo vật lý ổ cứng khỏi cổng USB, hãy đảm bảo không có ứng dụng nào trong máy ảo truy cập ổ này.Để tháo an toàn ổ USB, bạn có thể mở console Hyper-V Manager và đi đến cửa sổ cài đặt máy ảo. Trong phần SCSI Controller, chọn ổ cứng bạn muốn xóa và nhấp Remove. Lưu thay đổi. Sau đó, bạn có thể tháo vật lý ổ cứng khỏi cổng USB của Hyper-V host.
Chuyển hướng USB Device đến VM với Hyper-V Enhanced Session Mode
Trong phiên bản Hyper-V giới thiệu trong Windows Server 2012 R2/8.1, bất kỳ thiết bị USB nào có thể được chuyển hướng đến máy ảo từ máy tính client dùng Enhanced Session Mode (ESM). Công cụ Hyper-V Manager vmconnect.exe được dùng để kết nối. Nó cho phép kết nối đến console máy ảo và chọn thiết bị USB bạn muốn chuyển hướng.
Trước tiên bạn cần bật Enhanced Session Mode trong cài đặt Hyper-V server. Có thể làm bằng PowerShell:
Set-VMHost -EnableEnhancedSessionMode $true
Hoặc trong Hyper-V Settings → Enhanced Session Mode.

Khởi động lại dịch vụ Hyper-V Virtual Machine Management:
Get-Service vmms | Restart-Service
Trong phần Integration Services của cài đặt VM, bạn phải bật tùy chọn Guest Services.
Để chuyển hướng thiết bị USB qua Enhanced Session Mode, bạn cần mở Hyper-V console, chọn máy ảo, và nhấp nút Connect. Hoặc bạn có thể chạy công cụ vmconnect.exe (Virtual Machine Connection), chỉ định Hyper-V server và tên máy ảo. Công cụ vmconnect hỗ trợ một số tùy chọn dòng lệnh, nên bạn có thể cho người dùng file bat tùy chỉnh với các tùy chọn bạn muốn.

Nếu VM hỗ trợ Enhanced Session Mode, cửa sổ tương tự thuộc tính kết nối RDP sẽ xuất hiện. Nhấp Show Option → Local Resources → Local device and resources → More.

Chọn thiết bị USB trên máy tính của bạn để chuyển hướng đến VM. Nếu thiết bị bạn muốn chưa kết nối, chọn "Other supported Plug and Play (PnP) devices" và "Devices that I plug in later options".

Bây giờ tất cả thiết bị USB kết nối với máy tính của bạn sẽ tự động có sẵn trong phiên console của Hyper-V virtual machine.
Đặc điểm và hạn chế chính của Hyper-V Enhanced Session Mode:
- Chỉ Windows được hỗ trợ làm guest OS (bắt đầu từ Windows 8.1 / Windows Server 2012 R2);
- Bạn không cần truy cập mạng trực tiếp đến máy ảo. Tất cả kết nối được thực hiện qua Hyper-V host (bạn kết nối đến nó qua mạng qua cổng TCP 2179), và Hyper-V kết nối đến VM qua VMBus;
- Hyper-V Manager phải được cài trên máy tính client.
Phương pháp này tương tự như chuyển hướng thiết bị USB từ local host qua phiên RDP. Chúng ta không xem xét chi tiết hơn. 
Nếu bạn chuyển hướng thiết bị USB qua mạng (USB over IP hoặc qua phiên RDP), bạn vẫn có thể truy cập USB key ngay cả sau khi migrate máy ảo sang host khác (Hyper-V Live Migration / vMotion).