Si trabajas con virtualización en Windows, tarde o temprano te verás automatizando tareas. PowerShell y Hyper‑V encajan como un guante: desde arrancar o apagar VMs, hasta exportarlas, medir recursos o crear redes virtuales, todo se puede orquestar sin abrir la consola gráfica.
En las próximas líneas repasamos, con ejemplos y buenas prácticas, cómo manejar a fondo Hyper‑V con PowerShell. Verás comandos esenciales, creación y configuración de VMs, exportación e importación, filtrado masivo, métricas, red y almacenamiento, además de scripts útiles para informar del estado de tu plataforma y opciones de copia de seguridad para dormir más tranquilo.
¿Qué es PowerShell y por qué usarlo con Hyper‑V?
PowerShell es el marco de automatización y scripting de Microsoft basado en .NET. Combina un intérprete de órdenes con un lenguaje de scripts muy potente, ideal para administración en Windows, macOS y Linux.
Sus comandos (cmdlets) te permiten encadenar acciones y crear guiones reutilizables. Microsoft proporciona cientos de cmdlets base y, con el módulo Hyper‑V, dispones de todo lo necesario para gestionar hosts, VMs, red y almacenamiento desde consola.

Cómo abrir y usar PowerShell en hosts Hyper‑V
Si el host tiene GUI, abre el menú Inicio, busca PowerShell y ejecuta “Ejecutar como administrador”. En instalaciones tipo Server Core o Hyper‑V Server, escribe powershell en el símbolo del sistema para iniciar la sesión PS.
Para acceso remoto con Escritorio Remoto en Server Core, usa sconfig (opción 7) y, si necesitas volver a la consola, la opción 15 te devuelve al cmd.exe. Recuerda habilitar RDP en el host al que te conectarás.
La administración remota sin RDP es aún más cómoda: instala las herramientas en tu estación con Install-WindowsFeature RSAT-Hyper-V-Tools y añade -ComputerName a los cmdlets (Get‑VM, Start‑VM, etc.) para operar sobre el host objetivo. Gestionarás varios hosts sin saltar entre escritorios remotos.
Cmdlets esenciales de Hyper‑V con ejemplos
Cuando no recuerdes un comando o su sintaxis, tira de catálogo. Get-Command lista cmdlets, funciones y alias disponibles, y puedes filtrar por patrón:
Get-Command -Module Hyper-V
Get-Command *-VM
Get-Command *-VHD*
Para ver ayuda, ejemplos y parámetros, Get-Help aclara la sintaxis e incluso muestra ejemplos prácticos:
Get-Help Get-VM
Inventario y ciclo de vida de VMs
Para ver VMs del host local o remoto, Get-VM es el primer paso:
Get-VM
Get-VM -ComputerName Server1
Inicia VMs concretas o lotes. Puedes usar comodines en el nombre:
Start-VM -Name 'Windows Server 2016'
Start-VM -Name 'Hyper-V*'
Apaga correctamente (o forzado si no responde). Stop-VM admite -TurnOff y -Force para casos extremos, y Save-VM hiberna el estado:
Stop-VM -Name 'Windows Server 2016'
Stop-VM -Name 'Hyper-V*' -TurnOff
Stop-VM -Name 'Windows Server 2016' -Force
Save-VM -Name 'Windows Server 2016'
Get-VM -Name 'Hyper-V*' | Save-VM
Para apagado elegante desde el SO invitado, Invoke-VMShutdown es ideal cuando la integración lo permite:
Invoke-VMShutdown -VMName 'testvps' -Force
Puntos de control (instantáneas)
Los checkpoints son oro antes de cambios delicados. Checkpoint-VM crea el punto y Get-VMSnapshot lo verifica:
Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName 'Update1'
Get-VMSnapshot -VMName 'Windows Server 2016'
Para limpiar instantáneas por patrón, encadena con canalización. Remove-VMSnapshot borra lo que indiques:
Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name 'Testing*'
Discos virtuales (VHD/VHDX)
Verifica rutas y salud de archivos. Test-VHD te confirma la existencia y validez del VHD:
Test-VHD -Path 'C:\Testing.vhd'
Cuando necesites crear o adjuntar, combina New-VHD y Add-VMHardDiskDrive para automatizar creación/adjunto. El tamaño fijo es buena práctica en cargas sensibles al rendimiento:
New-VHD -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx' -SizeBytes 60GB -Fixed
Add-VMHardDiskDrive -VMName 'WSTEST' -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx'
Métricas y red
Activa la medición de recursos y revisa consumos por VM. Enable-VMResourceMetering + Measure-VM te dan CPU, RAM, disco y red:
Enable-VMResourceMetering -VMName 'Windows Server 2016'
Measure-VM -VMName 'Windows Server 2016'
Para enumerar adaptadores virtuales, incluye gestión. Get-VMNetworkAdapter abarca VMs y el propio host con -All:
Get-VMNetworkAdapter -All
Versión de configuración, procesos y filtrado
Tras actualizar el host, sube la versión de VM si procede. Update-VMVersion lo hace de forma segura:
Update-VMVersion -Name 'TestVM'
Para diagnosticar cuellos de botella, apóyate en cmdlets de procesos. Get-Process, Stop-Process, Start-Process, Wait-Process y Debug-Process te dan control:
Get-Process -Id 8892
Get-Process WINWORD | Format-List *
Start-Process -FilePath 'notepad.exe'
Start-Process -FilePath 'powershell' -Verb RunAs
Stop-Process -Name 'notepad'
Stop-Process -Id 5052
Where-Object filtra cualquier colección. Úsalo con servicios, cmdlets o procesos para quedarte con lo relevante:
Get-Service | Where-Object {$_.Status -eq 'Stopped'}
Get-Command | Where-Object {$_.Name -like '*wait*'}
Get-Process | Where-Object {$_.ProcessName -Match '^sys.*'}
Crear y configurar VMs con PowerShell
Crear una VM de Generación 2 con VHDX nuevo y red asignada es cuestión de un comando. New-VM permite definir memoria, disco, ruta y conmutador en un único paso:
New-VM -Name 'WSTEST' -MemoryStartupBytes 2GB -Generation 2 \
-NewVHDPath 'D:\hyper-v\virtual hard disks\WSTEST.vhdx' \
-NewVHDSizeBytes 60GB -SwitchName 'ExternalSwitch'
Si necesitas un DVD virtual para arrancar desde ISO, agrega controladora y unidad. Recuerda emparejar número y ubicación de la controladora a tu diseño:
Add-VMSCSIController -VMName 'WSTEST'
Add-VMDvdDrive -VMName 'WSTEST' -ControllerNumber 1 -ControllerLocation 0 -Path 'D:\ISO\my.iso'
También puedes preparar discos fijos y adjuntarlos. Los VHDX fijos reducen fragmentación y latencias en I/O exigente:
New-VHD -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx' -SizeBytes 60GB -Fixed
Add-VMHardDiskDrive -VMName 'WSTEST' -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx'
Para escenarios con VHD existente, especifica -VHDPath y, si usas administración remota, añade -ComputerName. La propiedad -BootDevice permite elegir entre VHD, ISO o arranque de red:
New-VM -ComputerName 'Server1' -Name 'VM1' -MemoryStartupBytes 4GB \
-BootDevice VHD -VHDPath '.\VMs\Win10.vhdx' -Path '.\VMData' \
-Generation 2 -SwitchName 'ExternalSwitch'
Un ejemplo con “splatting” en PowerShell ISE para dejarlo limpio y repetible. Es ideal para plantillas de creación:
$VMName = 'VMNAME'
$VM = @{
Name = $VMName
MemoryStartupBytes = 2147483648
Generation = 2
NewVHDPath = "C:\\Virtual Machines\\$VMName\\$VMName.vhdx"
NewVHDSizeBytes = 53687091200
BootDevice = 'VHD'
Path = "C:\\Virtual Machines\\$VMName"
SwitchName = (Get-VMSwitch).Name
}
New-VM @VM
Administración avanzada: movimientos, importaciones y exportaciones
Para mover una VM entre hosts, Move-VM admite traslado con o sin almacenamiento, y funciona genial cuando el origen está en SMB:
Move-VM -ComputerName 'Server1' -Name 'VM1' -DestinationHost 'Server2'
Move-VM -ComputerName 'Server1' -Name 'VM1' -DestinationHost 'Server2' \
-IncludeStorage -DestinationStoragePath 'D:\VM_name'
Exportar crea una copia completa (configuración, VHDs e instantáneas). Export-VM sirve para archivo, pruebas o migraciones ad-hoc:
Export-VM -ComputerName 'Server1' -Name 'VM1' -Path 'D:\'
Get-VM | Export-VM -Path 'C:\'
Importar tiene tres modalidades: Registrar in situ (mismos archivos e ID), Restaurar (copia a nueva ruta conservando ID) y Copiar (copia con nuevo ID). Elige según colisión de IDs y objetivo:
# Registrar in situ (elimina antes la VM original con el mismo ID)
Get-VM 'DemoVM' | Remove-VM
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\DemoVM\\Virtual Machines\\{GUID}.vmcx'
# Restaurar a nuevas rutas, conservando ID
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\Hyper-V Server 2012\\Virtual Machines\\{GUID}.vmcx' \
-Copy -VhdDestinationPath 'C:\\Program Files\\Imported VMs\\VHD Files' \
-VirtualMachinePath 'C:\\Program Files\\Imported VMs\\VM Files'
# Copiar con nuevo ID (importable varias veces en el mismo host)
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\DemoVM\\Virtual Machines\\{GUID}.vmcx' \
-Copy -GenerateNewId
Si trabajas con Azure Local (Windows Server 2019/2022 y versiones como 2311.2 en adelante), la administración remota con -ComputerName es la norma: inventario, arranque/parada, checkpoints, importación/exportación y movimientos se ejecutan igual desde tu equipo de administración.
Red, almacenamiento y recursos: memoria y CPU
Crea conmutadores para aislar o conectar VMs a la LAN. New-VMSwitch admite modos y QoS de ancho de banda:
New-VMSwitch 'QoS Switch' -NetAdapterName 'Wired Ethernet Connection 3' -MinimumBandwidthMode Weight
Agrega NICs virtuales a VMs y conéctalas al conmutador correspondiente. Add-VMNetworkAdapter es tu aliado para redes por VM:
Add-VMNetworkAdapter -ComputerName 'Server1' -VMName 'VM1' -Name 'Redmond NIC1'
Add-VMNetworkAdapter -ComputerName 'Server1' -VMName 'VM1' -SwitchName 'Network'
La memoria dinámica optimiza densidad sin perder control. Set-VMMemory ajusta mínimos, inicio, máximos, prioridad y buffer:
Set-VMMemory -ComputerName 'Server1' -Name 'VM1' -DynamicMemoryEnabled $true \
-MinimumBytes 64MB -StartupBytes 256MB -MaximumBytes 2GB -Priority 80 -Buffer 25
Asigna vCPU con límites y reservas. Set-VMProcessor define recuento, reserva, máximo y peso relativo por VM:
Set-VMProcessor -ComputerName 'Server1' -Name 'VM1' -Count 2 -Reserve 10 -Maximum 75 -RelativeWeight 200
Para generar nuevos discos, New-VHD cubre escenarios dinámicos o fijos en VHD/VHDX. Combínalo con Add-VMHardDiskDrive para adjuntarlos a la VM deseada.
Operaciones masivas y filtrado
Ver comandos del módulo Hyper‑V en una rejilla interactiva es muy práctico. Out-GridView te ayuda a inspeccionar disponible y parámetros:
Get-Command -Module Hyper-V | Out-GridView
Para inventarios, filtra por estado. Where-Object te deja ver VMs en ejecución o apagadas de un vistazo:
Get-VM | Where-Object {$_.State -eq 'Running'}
Get-VM | Where-Object {$_.State -eq 'Off'}
Arranca todas las VMs apagadas o detén las que están en ejecución mediante canalización. Es ideal para tareas programadas:
Get-VM | Where-Object {$_.State -eq 'Off'} | Start-VM
Get-VM | Where-Object {$_.State -eq 'Running'} | Stop-VM
Renombrar y limpiar también es directo. Rename-VM y Remove-VM te ayudan en reetiquetado y retirada (recuerda, Remove‑VM no borra VHDs):
Rename-VM -ComputerName 'Server1' -Name 'VM1' -NewName 'VM2'
Get-VM -Name 'VM2'
Remove-VM -Name 'VM2'
En clúster, retira grupos completos cuando toque. Remove-ClusterGroup -RemoveResources limpia la VM y sus recursos de cluster:
Get-ClusterGroup
Remove-ClusterGroup -RemoveResources -Name 'VM1'
Supervisión y backup: scripts y herramientas
Para auditar salud de Hyper‑V con informes HTML, el script de Serhat Akinci genera un reporte completo del entorno y puede enviarse por correo. Descárgalo y revisa un ejemplo de salida:
Link de descarga · Reporte de ejemplo
Si usas Hyper‑V Replica, el script de Sangeeth monitoriza el estado de replicación en nodos únicos o clúster y entrega un informe HTML listo para distribuir:
Descarga Replication Health Mailer
En cuanto a protección de datos, existen soluciones pensadas para VM como NAKIVO Backup & Replication (VMware, Hyper‑V, Nutanix, AWS EC2, Linux, Windows y Microsoft 365), y Vinchin Backup & Recovery (Proxmox, VMware, Hyper‑V, XenServer, XCP‑ng, oVirt, RHV…). Ofrecen copia sin agente, recuperación instantánea y migración V2V, y facilitan políticas y programación centralizadas para minimizar riesgos.
Recuerda que Export‑VM e Import‑VM sirven como alternativa ad‑hoc para archivado, pruebas y restauración sencilla, pero no sustituyen a un backup integral con deduplicación, cifrado y compresión. La exportación exige más intervención manual y escala peor en entornos grandes.
Ya cuentas con una guía práctica para llevarte Hyper‑V a la consola: descubrir cmdlets, crear y mover VMs, medir recursos, afinar red y almacenamiento, filtrar en masa y reportar salud. El ecosistema PowerShell te da velocidad y precisión; si lo combinas con buenas políticas de copia y scripts de supervisión, tendrás una plataforma sólida y lista para crecer.