Una de las desventajas significativas de Hyper-V sobre otros hipervisores (por ejemplo, VMWare ESXi o Proxmox) es la falta de una función para redirigir los dispositivos USB desde el host a las máquinas virtuales. Desde la versión Hyper-V 2012 R2, ha habido una serie de cambios con respecto a las opciones de USB Passthrough, pero esta funcionalidad sigue siendo inferior a la de la competencia. En este artículo, discutiremos los detalles de la redirección USB en Hyper-V.
Una descripción general del paso a través de USB de Hyper-V
Passthrough de USB se refiere a la capacidad de redirigir un dispositivo USB desde el hipervisor del host (oa través de la red desde otro servidor / dispositivo) a una máquina virtual. Con un paso a través de USB, puede redirigir una memoria USB, un token, un dongle USB, un módem o cualquier otro dispositivo conectado al puerto USB del host físico a la máquina virtual.
La mala noticia es que Hyper-V no admite el paso a través de USB con todas las funciones. No puede redirigir un dispositivo USB arbitrario desde un host físico a una máquina virtual (VMWare es mucho mejor con esto; consulte el artículo Passthrough de USB en VMWare ESXi). Hay varias opciones integradas para usar un dispositivo USB externo en una VM Hyper-V, pero todas tienen limitaciones importantes. Actualmente, puede utilizar las siguientes formas de redirigir un dispositivo USB a la máquina virtual Hyper-V.
- Redirigir unidades USB desde el host Hyper-V;
- Modo de sesión mejorado en la consola Hyper-V;
- Redirección USB a través de RDP;
- Uso de una solución de software / hardware para redireccionamiento USB a través de la red (USB sobre IP)
El último escenario implica el uso de soluciones de terceros para implementar USB sobre IP. Puede ser un concentrador USB de red, una solución de software para redirigir un dispositivo USB a través de una red TCP / IP desde otro servidor. La mayoría de las soluciones comerciales populares son de pago (AnywhereUSB, DigiUSB). Los gratuitos incluyen VirtualHere USB (gratis para una llave USB y un servidor de destino) y un proyecto de código abierto bastante antiguo usbip.sourceforge.net (la parte del servidor está implementada en Linux, el cliente se puede instalar en Windows).
Acceder a un disco duro USB desde una máquina virtual Hyper-V
Puede redirigir con bastante facilidad una unidad USB conectada al host directamente dentro de cualquier máquina virtual Hyper-V en ejecución. Veamos cómo dar acceso directo a una máquina virtual Hyper-V a la unidad USB del host.
- Conecte una unidad USB externa al host de Hyper-V (puede ser cualquier host con Windows y el rol de Hyper-V instalado, o el servidor gratuito de Microsoft Hyper-V). La unidad aparecerá en un sistema y se le asignará una letra de unidad (si no se ha asignado una letra de unidad, consulte el artículo);
- Abre el Gestión de discos (
diskmgmt.msc) consola, haga clic con el botón derecho en la unidad (en nuestro ejemplo, el ID de la unidad USB de 20 GB es Disco 1) y seleccione Desconectado.Si está utilizando Windows Server Core o Hyper-V Server, que no tienen algunos de los complementos gráficos de mmc, puede administrar sus discos locales mediante el módulo Disk Management PowerShell. Los siguientes comandos pueden enumerar los discos físicos en el host y desconectar el disco especificado:
Get-Disk
Get-Disk -Number 1 |Set-Disk -IsOffline:$true
- Ejecute Hyper-V Manager y abra las propiedades de la máquina virtual, a la que debe conectarse una unidad USB. En el Controlador SCSI sección, agregue un nuevo disco, indicando que es físico (Disco duro físico). En el menú desplegable, seleccione su unidad USB (se verá así: Disco 1 20,00 Gb Bus 0 Lun 0 Destino 1).
Nota. No es necesario apagar la máquina virtual para agregar un disco duro SCSI. Para los dispositivos SCSI, se admiten unidades de adición y extracción en caliente.

- Ahora mostraremos cómo acceder a un disco USB en un host Hyper-V desde el sistema operativo invitado de una máquina virtual que ejecuta Windows. Abra la consola de la máquina virtual o conéctese a ella a través de RDP. Inicie sesión en el sistema operativo invitado. Ejecute el Administrador de discos. El sistema operativo debería ver la nueva unidad. Si está fuera de línea, haga clic derecho sobre él y seleccione En línea. En este momento, no se asignan letras de unidad ni puntos de montaje a las particiones de un disco USB. Para solucionar este problema, haga clic con el botón derecho en la partición del disco y seleccione «Cambiar la letra de la unidad y las rutas”En el menú contextual. Asigne cualquier letra de unidad libre a la partición o especifique un punto de montaje.

¡Eso es todo! Ha conectado directamente un medio USB externo a la máquina virtual Hyper-V y ahora puede usarlo.
Importante. Para evitar la pérdida de datos, antes de retirar físicamente el disco duro del puerto USB, asegúrese de que ninguna aplicación de la máquina virtual acceda a este disco.
Para extraer la unidad USB de forma segura, puede abrir el Administración de Hyper-Vr consola y vaya a la ventana de configuración de la máquina virtual. En el Controlador SCSI sección, seleccione el disco duro que desea quitar y haga clic en Eliminar. Guarde sus cambios. Después de eso, puede quitar físicamente el disco duro del puerto USB del host Hyper-V.
Redirigir el dispositivo USB a la máquina virtual con el modo de sesión mejorado de Hyper-V
En la versión de Hyper-V introducida en Windows Server 2012 R2 / 8.1, cualquier dispositivo USB se puede reenviar a una máquina virtual desde una computadora cliente usando Modo de sesión mejorado (ESM). La herramienta Hyper-V Manager vmconnect.exe se utiliza para conectarse. Le permite conectarse a la consola de la máquina virtual y seleccionar los dispositivos USB que desea redirigir.
Primero debe habilitar el modo de sesión mejorado en la configuración del servidor Hyper-V. Esto se puede hacer usando PowerShell:
Set-VMHost -EnableEnhancedSessionMode $true
O en la Configuración de Hyper-V -> Modo de sesión mejorado.
Reinicie el servicio de administración de máquinas virtuales Hyper-V:Get-Service vmms | Restart-Service
En el Servicios de integración sección de la configuración de la máquina virtual, debe habilitar la Servicios de invitado opción.
Para redirigir el dispositivo USB a través del modo de sesión mejorado, debe abrir la consola de Hyper-V, seleccionar la máquina virtual y hacer clic en el Conectar botón. O puede ejecutar el vmconnect.exe herramienta (Conexión de máquina virtual), especifique el servidor Hyper-V y el nombre de la máquina virtual. La herramienta vmconnect admite algunas opciones de línea de comandos, por lo que puede proporcionar un archivo bat personalizado con las opciones que desee para los usuarios.

Si la máquina virtual admite el modo de sesión mejorado, aparecerá una ventana similar a las propiedades de la conexión RDP. Hacer clic Mostrar opción -> Recursos locales -> Dispositivo y recursos locales -> Más.

Seleccione los dispositivos USB en su computadora para ser redirigidos a la VM. Si el dispositivo que desea no está conectado actualmente, seleccione el «Otros dispositivos Plug and Play (PnP) compatibles» y «Dispositivos que conecto en opciones posteriores”.

Ahora, todos los dispositivos USB conectados a su computadora estarán disponibles automáticamente en la sesión de consola de la máquina virtual Hyper-V.
Características y limitaciones clave del modo de sesión mejorado de Hyper-V:
- Solo Windows es compatible como sistema operativo invitado (a partir de Windows 8.1 / Windows Server 2012 R2);
- No necesita acceso de red directo a la máquina virtual. Todas las conexiones se realizan a través del host Hyper-V (se conecta a él a través de la red a través del puerto TCP 2179) y Hyper-V se conecta a la VM a través del VMBus;
- Hyper-V Manager debe estar instalado en la computadora del cliente.
Este método es similar a redirigir dispositivos USB desde un host local a través de una sesión RDP. No consideraremos esto con más detalle. 
Si está redirigiendo dispositivos USB a través de la red (USB sobre IP o mediante una sesión RDP), aún puede acceder a la llave USB incluso después de migrar la máquina virtual a otro host (Hyper-V Live Migration / vMotion).





