- Combina VMConnect/RDP con FFmpeg para grabar la ventana de la VM desde PowerShell de forma fiable.
- Usa cmdlets de Hyper‑V (Start/Stop/Checkpoint/Measure‑VM) para preparar y estabilizar la sesión antes de capturar.
- Transfiere binarios y datos entre host y VMs con SMB, Copy‑VMFile, VHDX o Sesión Mejorada.
- Automatiza creación, limpieza y exportación de VMs para repetir escenarios de grabación sin sorpresas.
Grabar lo que ocurre dentro de una máquina virtual en Hyper‑V desde PowerShell es perfectamente posible si se combinan las herramientas nativas de Hyper‑V (VMConnect, RDP, servicios de invitado) con utilidades de captura de pantalla por línea de comandos. En esta guía práctica encontrarás los métodos viables para capturar vídeo del escritorio de una VM y, además, todo lo imprescindible de PowerShell e Hyper‑V que te facilitará la tarea: cmdlets clave, automatización, transferencia de archivos y administración remota.
Para que tengas el panorama completo, incluimos procedimientos detallados para mover archivos entre host y VMs (imprescindible si necesitas pasar instaladores o binarios como FFmpeg a la VM), los cmdlets esenciales de gestión, y scripts para crear, clonar o reconstruir VMs. Todo está explicado en un español cercano, con ejemplos prácticos, y con recomendaciones de seguridad y buenas prácticas.
Requisitos y preparación del entorno
Antes de capturar, conviene dejar listo el entorno: disponer de PowerShell actualizado, acceso al host y a las VMs, y los módulos de Hyper‑V. Además, toma medidas para evitar interrupciones de notificaciones durante la grabación. Esto agiliza los pasos y reduce errores, así que vale la pena preparar el terreno con mimo.
¿Qué es PowerShell? Es el marco de automatización y scripting de Microsoft basado en .NET que combina shell y lenguaje. Los cmdlets permiten encadenar acciones complejas en scripts (.ps1), programarlos con el Programador de tareas y ejecutarlos local o remotamente.
Cómo abrir PowerShell: en sistemas con interfaz gráfica, busca PowerShell y elige “Ejecutar como administrador”. En Windows Server Core o Hyper‑V Server, escribe powershell
en el símbolo del sistema para entrar en sesión PS. Si usas acceso remoto, asegúrate de tener RDP habilitado o configura remoting con WinRM/Enter‑PSSession.
Administración remota: desde tu estación de trabajo puedes instalar herramientas RSAT de Hyper‑V con Install-WindowsFeature RSAT-Hyper-V-Tools
. Luego, ejecuta cmdlets apuntando al host con parámetros de destino o sesiones remotas (por ejemplo, Enter-PSSession -ComputerName servidor -Credential (Get-Credential)
).
Ayuda y descubrimiento: usa Update-Help
para tener la ayuda al día y Get-Help <cmdlet>
para ver sintaxis y ejemplos. Con Get-Command -Module Hyper-V
listarás todos los cmdlets de Hyper‑V; si te gusta verlos en ventana filtrable, añade | Out-GridView
.
Métodos prácticos para capturar vídeo de VMs Hyper‑V con PowerShell
Hyper‑V no trae un “grabador” nativo de la consola de la VM, pero puedes combinar VMConnect/RDP con una herramienta de captura por CLI como FFmpeg. A continuación, los escenarios más fiables y cómo automatizarlos desde PowerShell.
1) VMConnect + FFmpeg (captura de la ventana de la VM)
VMConnect abre la consola de la VM en una ventana local. Si lanzas VMConnect y apuntas FFmpeg a esa ventana, obtienes una grabación de lo que sucede dentro. Pasos típicos:
- Inicia la VM (si no está encendida):
Start-VM -Name "MiVM" -Wait
. - Abre la consola:
vmconnect.exe <NombreHost> "MiVM"
(desde PowerShell puedes ejecutarStart-Process vmconnect.exe -ArgumentList "ServidorHV","MiVM"
). - Lanza FFmpeg capturando la ventana de VMConnect. En Windows, FFmpeg permite gdigrab para capturar por título de ventana:
ffmpeg -f gdigrab -framerate 30 -i title="Virtual Machine Connection" -vcodec libx264 -preset veryfast -pix_fmt yuv420p C:\Capturas\MiVM.mp4
.
El título de la ventana de VMConnect puede incluir el nombre de la VM/host (según versión). Ajusta el parámetro -i title=
al texto exacto. Para audio, añade una entrada dshow si tienes “Stereo Mix” u otra fuente: -f dshow -i audio="Stereo Mix"
. Si necesitas convertir el MP4 resultante a otro contenedor o códec, consulta cómo cambiar el formato de un video en Windows.
Automatización con PowerShell: crea un script que arranque la VM, abra VMConnect y ejecute FFmpeg con los parámetros adecuados. Puedes controlar el tiempo de grabación con -t 00:10:00
(por ejemplo, 10 minutos) o parar FFmpeg enviando q a su proceso.
2) RDP a la VM + FFmpeg (captura de la sesión remota)
Si la VM tiene red y Escritorio remoto activo, conecta con mstsc
y graba la ventana RDP con FFmpeg del mismo modo (gdigrab por título). Ventaja: calidad más estable a resoluciones altas; inconveniente: requiere red/credenciales en la VM.
Desde PowerShell, puedes automatizar el cliente RDP con Start-Process mstsc.exe -ArgumentList "/v:10.10.10.50"
y luego apuntar FFmpeg a la ventana cuyo título contenga la IP o el nombre del destino. Si necesitas mapear discos locales (para guardar el vídeo dentro de la VM), configúralo en las opciones de RDP antes de conectar.
3) VMConnect en Modo de Sesión Mejorado
El “Enhanced Session Mode” permite mejores resoluciones y uso de recursos locales al conectar con VMConnect, algo muy útil para capturas nítidas a pantalla completa. Actívalo en el host: Set-VMHost -EnableEnhancedSessionMode $True
, y después conéctate a la VM con VMConnect. Selecciona la resolución deseada; la captura con FFmpeg funcionará igual que en el método 1 pero con mejor experiencia visual.
Este modo también facilita adjuntar unidades o redirigir recursos del host, lo cual viene de lujo para mover archivos necesarios para tus pruebas o para almacenar grabaciones.
4) Alternativa ligera: Steps Recorder (no es vídeo)
Si no necesitas vídeo continuo, el antiguo PSR (Steps Recorder) de Windows captura pantallazos con anotaciones de pasos. Se lanza con psr.exe
. No genera un MP4, pero puede ser útil para documentación rápida sin instalar nada adicional.
Cmdlets de Hyper‑V que te facilitan la vida al capturar
Estos comandos simplifican el control del ciclo de vida de la VM y el entorno de pruebas previo a la grabación. Con ellos podrás arrancar, detener, guardar el estado y medir recursos antes de pulsar “REC”.
Inventario y ayuda: Get-Command -Module Hyper-V
lista los cmdlets; Get-Help Get-VM
te explica usos y parámetros. Puedes filtrar o darle formato con Format-Table
, Format-List
u Out-GridView
.
Listar VMs y filtrar estados: Get-VM
devuelve todas; para las encendidas, Get-VM | Where-Object { $_.State -eq 'Running' }
. Si quieres las que están apagadas, cambia el filtro a 'Off'
.
Arranque y parada: Start-VM -Name "MiVM"
y Stop-VM -Name "MiVM"
. Para actuar en bloque, Get-VM | Where-Object { $_.State -eq 'Off' } | Start-VM
o Get-VM | Where-Object { $_.State -eq 'Running' } | Stop-VM
. Si no responde, añade -Force
en Stop-VM
.
Apagado limpio del invitado: Invoke-VMShutdown MiVM -Force
intenta cerrar el SO de forma elegante. Úsalo cuando quieras evitar cortes bruscos que puedan corromper datos.
Guardar estado y checkpoints: Save-VM -Name "MiVM"
hiberna la VM; Checkpoint-VM -Name "MiVM" -SnapshotName PreGrabacion
crea un punto de control. Para borrar instantáneas específicas, Remove-VMSnapshot -VMName "MiVM" -Name NombreParcial*
.
Medición de recursos: activa el metering con Enable-VMResourceMetering -VMName "MiVM"
y consulta con Measure-VM -VMName "MiVM"
. Te ayuda a valorar la configuración de CPU/RAM y medir los FPS para que la grabación vaya fluida.
Red y versión de VM: Get-VMNetworkAdapter -All
identifica NICs virtuales de VMs y del SO de gestión. Update-VMVersion -Name "MiVM"
actualiza la versión de configuración para nuevas capacidades. Útil si vas a usar Sesión Mejorada y características recientes.
Utilidades de procesos: desde PowerShell puedes arrancar aplicaciones de apoyo como FFmpeg con Start-Process
, elevar PowerShell con -Verb RunAs
, o detener procesos colgados con Stop-Process
. La combinación de cmdlets de procesos y Hyper‑V permite orquestar la grabación de principio a fin.
Mover archivos entre host y VMs: 7 métodos que funcionan
Para capturar necesitas a menudo pasar binarios (por ejemplo, FFmpeg), ISOs o scripts entre el host Hyper‑V y las VMs. Estos métodos cubren escenarios con y sin red, con GUI o sin ella, y con distintas restricciones.
Método 1: Recurso compartido SMB en el host
Habilita en el host las reglas de firewall para “Uso compartido de archivos e impresoras” y conecta desde tu equipo al recurso compartido del host (por ejemplo, \\10.10.10.31\c$\
o mapea con net use S: \\10.10.10.31\d$
). Ventaja: simple y rápido en entornos Windows. Nota: desactiva la regla cuando acabes con netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=No
.
Método 2: Único recurso compartido central
En vez de duplicar ISOs y herramientas en cada host, monta un SMB en un servidor/NAS y dale acceso a todos los hosts. Ideal en dominio AD. Si vas a transferir a una VM, configura conmutador virtual y el modo de red correspondiente. En Linux puedes usar SMB o SSH/SCP.
Método 3: RDP con unidades redirigidas
Habilita Escritorio remoto en el destino y, al abrir MSTSC, redirige discos locales (pestaña Recursos locales > Más > Unidades). Copia desde la unidad asignada dentro de la sesión. Funciona tanto con hosts con GUI como con VMs conectadas a la red.
Método 4: Copy-VMFile (sin red)
PowerShell 4+ ofrece Copy-VMFile
para pasar archivos del host a la VM sin depender de la red ni de firewall. Debes activar los Guest Services en la VM: Enable-VMIntegrationService -VMName VM1 -Name 'Guest Service Interface'
. Luego: Copy-VMFile "VM1" -SourcePath "C:\temp\file.txt" -DestinationPath "C:\Temp\file.txt" -CreateFullPath -FileSource Host
.
Método 5: Disco VHDX compartido y montable
Crea un VHDX en el host (New-VHD -Path C:\Hyper-V\data-temp.vhdx -SizeBytes 8GB -Dynamic
), móntalo (Mount-VHD
), inicialízalo/particiónalo y formatea (NTFS). Copia tus archivos dentro, desmonta (Dismount-VHD
) y adjunta ese VHDX a la VM (Add-VMHardDiskDrive -VMName VM2 -Path C:\Hyper-V\data-temp.vhdx
). Dentro de la VM, asigna letra y copia.
Método 6: VMConnect con Sesión Mejorada
Activa el modo mejorado con Set-VMHost -EnableEnhancedSessionMode $True
y, al conectar, redirige recursos locales como si fuese RDP. Permite arrastrar/soltar virtual (según versión) y acceso a unidades, haciendo trivial llevar binarios de captura o sacar resultados.
Método 7: Imagen ISO con archivos
Genera una ISO con los ficheros que necesites (solo lectura desde la VM) y móntala en la unidad de DVD virtual. Es útil para inyectar contenido de forma inmutable, por ejemplo, instaladores o herramientas base.
Crear, eliminar y recrear VMs por script (y prepararlas para grabar)
Cuando documentas o grabas demos, a veces necesitas entornos “limpios” de forma rápida. Con PowerShell puedes eliminar una VM vieja, recrearla y dejarla lista con ISO y respuesta automatizada.
Eliminar una VM de desarrollo y sus VHD: define $ThisVM = "SQLTestVM"
, detén la VM (Stop-VM -Name $ThisVM
), elimina sus discos con Get-VMHardDiskDrive -VMName $ThisVM | Remove-Item -Force
y luego Remove-VM -VMName $ThisVM -Force
. Importante: Remove-VM
no borra VHDs, hay que hacerlo aparte.
Recrear la VM: usa New-VM
con los parámetros adecuados (nombre, memoria, Generation 2, VHDX nuevo, conmutador). Conecta la ISO del SO y arranca. Puedes añadir un VFD/archivo de respuesta (unattend) para que la instalación sea desatendida y en pocos minutos esté lista para grabar.
Memoria dinámica opcional: Set-VMMemory -VMName $ThisVM -DynamicMemoryEnabled $true -MinimumBytes 1GB -StartupBytes 2GB -MaximumBytes 4GB
. Optimiza recursos si vas a ejecutar múltiples VMs mientras grabas.
Crear una VM con PowerShell paso a paso
Ejemplo rápido de creación de una VM Gen2 con VHDX de 60 GB y conexión a un switch concreto. Siempre puedes adaptar rutas, memoria y nombres para tu caso y así automatizar laboratorios de grabación.
- Crear la VM:
New-VM -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:\hyper-v\virtual hard disks\WSTEST.vhdx" -NewVHDSizeBytes 60GB -SwitchName "ExternalSwitch"
. - Añadir DVD con ISO:
Add-VMSCSIController -VMName WSTEST
yAdd-VMDvdDrive -VMName WSTEST -ControllerNumber 1 -ControllerLocation 0 -Path D:\ISO\instalador.iso
. - Disco fijo opcional:
New-VHD -Path "D:\hyper-v\virtual hard disks\wstest.vhdx" -SizeBytes 60GB -Fixed
yAdd-VMHardDiskDrive -VMName WSTEST -Path "D:\hyper-v\virtual hard disks\wstest.vhdx"
.
También puedes usar “splatting” con un hashtable para que el script quede más legible: $VM = @{ Name = "VMNAME"; MemoryStartupBytes = 2GB; Generation = 2; NewVHDPath = "C:\Virtual Machines\VMNAME\VMNAME.vhdx"; NewVHDSizeBytes = 50GB; BootDevice = "VHD"; Path = "C:\Virtual Machines\VMNAME"; SwitchName = (Get-VMSwitch).Name } ; New-VM @VM
. Así reutilizas parámetros en distintos entornos.
Más administración útil para tu flujo de grabación
Exportar una VM: Export-VM MiVM -Path "F:\vmbak" -CopyState
crea una exportación completa, útil para clonar escenarios de demo. Te ahorra tener que reinstalar justo antes de grabar.
Información de memoria/CPU: Get-VMMemory
y Get-VMCPUCount -VM MiVM
te muestran la configuración actual. Evita cuellos de botella ajustando recursos cuando ves caídas de FPS en la captura.
Descubrimiento avanzado: Get-Command *-VM
o Get-Command *-VHD*
te ayudan a encontrar cmdlets relacionados. Con Where-Object
puedes filtrar por nombre/estado: Get-Process | Where-Object { $_.ProcessName -Match '^sys.*' }
. Úsalo para localizar FFmpeg y detenerlo tras X minutos.
Buenas prácticas: seguridad, rendimiento y copias de seguridad
Activa solo lo necesario en el firewall para compartir archivos (y desactívalo al acabar), cifra credenciales y usa cuentas con privilegios mínimos en tus scripts. En rendimiento, valora usar disco rápido para la carpeta donde escribes los MP4 y limita el bitrate de FFmpeg si ves tirones. Si usas Xbox Game Bar, aprende a evitar que la barra de grabación salga en tus vídeos.
En protección de datos, para entornos críticos es recomendable emplear soluciones de backup a nivel host que creen copias eficientes, consistentes y rápidas. Existen herramientas de terceros que cubren Hyper‑V y otros hipervisores (por ejemplo, suites comerciales que ofrecen recuperación instantánea o V2V). En la documentación consultada se mencionan soluciones como NAKIVO Backup & Replication o Vinchin Backup & Recovery como opciones del mercado; evalúa costes y encaje en tu realidad antes de adoptarlas.
Con todo lo anterior puedes organizar un flujo robusto: preparas la VM con PowerShell, mueves los binarios necesarios por SMB/Copy‑VMFile/VHDX, conectas con VMConnect (si es posible, en Sesión Mejorada), lanzas FFmpeg desde PowerShell para capturar la ventana y controlas el proceso por tiempo o evento; además, guardas snapshots antes de empezar y exportas la VM si vas a repetir grabaciones. Unificando administración y captura via PowerShell el trabajo se vuelve repetible, documentable y rápido de ejecutar.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.