Cómo administrar máquinas virtuales de Hyper-V mediante PowerShell

Administrar máquinas virtuales de Hyper-V mediante PowerShell es prácticamente una salvación una vez que se domina. Si configurar y gestionar máquinas virtuales mediante la interfaz gráfica de usuario resulta complicado, los comandos de PowerShell pueden simplificar muchas tareas rutinarias: crear máquinas virtuales, conmutadores de red, instantáneas, etc. Además, si se automatizan implementaciones o actualizaciones, usar scripts para ello tiene mucho sentido. Sin embargo, a veces es complicado saber qué comandos funcionan realmente, especialmente con tantas versiones de Windows y configuraciones de Hyper-V disponibles. Aquí tienes un resumen de lo que se suele necesitar y algunos consejos basados ​​en configuraciones reales. Es un poco lioso, pero bueno, funciona. Prepárese para familiarizarse con comandos como «Install-WindowsFeature», «New-VMSwitch», «New-VM» y todos los comandos de control de máquinas virtuales como «Start-VM», «Stop-VM», etc. Además, tenga en cuenta que es fundamental que las rutas, los nombres de los adaptadores de red y los nombres de las máquinas virtuales funcionen correctamente; de ​​lo contrario, los scripts no serán de mucha utilidad. Si las cosas no funcionan como se espera, a veces es útil reiniciar o volver a habilitar funciones, ya que Windows suele complicar las cosas más de lo necesario. Ahora, a los pasos…

Cómo administrar máquinas virtuales de Hyper-V mediante PowerShell

Habilitar la función Hyper-V en su servidor o escritorio

Si Hyper-V no funciona (quizás acaba de instalar Windows o es una configuración nueva), primero debe habilitar ese rol. Para Windows Server, el comando es:

Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart

En Windows 10/11, es un poco diferente y normalmente también se hace a través de PowerShell:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All

Este comando inicia la instalación de funciones. En algunas configuraciones, podría solicitar un reinicio, así que prepárese para ello. Nota: asegúrese de que su CPU sea compatible con la virtualización (Intel VT-x o AMD-V) y de que esté habilitada en la BIOS; de lo contrario, no funcionará. Verificar con ` systeminfo` en el Símbolo del sistema o PowerShell puede indicarle si la virtualización está habilitada.

Comprueba si Hyper-V está activo y listo para empezar

Sinceramente, a veces no queda claro si Hyper-V se instaló correctamente. Ejecutar:

Get-Command -Module hyper-v

Si no aparecen comandos, Hyper-V no está listo. También puedes consultar la información del host de Hyper-V con:

Get-VMHost|fl *

O verifique la información de su CPU con:

Get-ComputerInfo -Property "CsNumberOfLogicalProcessors", "CsTotalPhysicalMemory"

Si los comandos funcionan, estará listo para comenzar a crear y administrar máquinas virtuales.

Crear un conmutador virtual para el acceso a la red

Crear ese conmutador virtual suele ser el primer paso para configurar la red. Primero, enumere sus adaptadores de red:

Get-NetAdapter | where {$_.status -eq "up"}

Identifique el correcto, generalmente llamado «Ethernet» o similar. Si su hardware admite SR-IOV (dependiendo de su NIC), deberá habilitarlo en el switch, pero ese es un tema aparte. Para crear un switch externo que conecte su NIC física, ejecute algo como:

New-VMSwitch -Name "ExternalVMSwitch" -AllowManagementOS $True -NetAdapterName "Ethernet0" -SwitchType External

Reemplace «Ethernet0» con el nombre de su interfaz. A veces, la creación del switch falla si el adaptador está en uso o mal configurado, así que verifique que el adaptador esté activo y no esté conectado a ningún dispositivo extraño.

Construir una máquina virtual con PowerShell

Aquí es donde se pone divertido. Para crear una máquina virtual rápidamente, haz lo siguiente:

$VMName = "mun-prx2" $VMConfig = @{ Name = $VMName MemoryStartupBytes = 1GB Generation = 2 Path = "E:\HV\$VMName" SwitchName = "ExternalVMSwitch" } New-VM @VMConfig # And create a virtual disk if you haven’t yet: New-VHD -Path "E:\HV\$VMName\$VMName.vhdx" -SizeBytes 10GB # Attach that disk: Add-VMHardDiskDrive -VMName $VMName -Path "E:\HV\$VMName\$VMName.vhdx" 

Esto crea una máquina virtual de segunda generación con 1 GB de RAM (para empezar) y un disco virtual de 10 GB. Puede ajustar los tiempos y tamaños según sea necesario. A veces, se producirán errores si las rutas no existen o los permisos son incorrectos; por lo tanto, compruebe que sus carpetas tengan permisos de escritura y existan antes de ejecutar.

Ajuste la configuración de la máquina virtual sobre la marcha

Si desea más memoria o CPU, utilice comandos como:

Get-VM -Name "mun-prx2" | Set-VMMemory -StartupBytes 2GB Set-VMProcessor -VMName "mun-prx2" -Count 2 

Estos son útiles si detecta que su máquina virtual tiene poca potencia o necesita más recursos. Tenga en cuenta que algunos cambios requieren apagar o reiniciar la máquina virtual, así que planifique en consecuencia.

Controlar máquinas virtuales: iniciar, detener, guardar, tomar instantáneas

Iniciar una máquina virtual: `Start-VM -Name «mun-prx2″` (obviamente).Apagado seguro: `Stop-VM -Name «mun-prx2″` (para un apagado correcto, asegúrese de que los Servicios de Integración funcionen en el sistema operativo invitado).Para apagar inmediatamente (apagado forzado):

Stop-VM -Name "mun-prx2" -TurnOff

Toma de instantáneas (Puntos de control):

Checkpoint-VM -VMName "mun-prx2" -SnapshotName "Before major changes"

Restaurar una instantánea puede deshacer muchas cosas si las cosas salen mal:

Restore-VMCheckpoint -VMName "mun-prx2" -Name "Before major changes" -Confirm:$false 

Consejos adicionales: mover, redimensionar y exportar máquinas virtuales

Si necesita mover una máquina virtual a otro disco, este comando ayuda:

Move-VMStorage -VMName "mun-prx2" -DestinationStoragePath "D:\VMs"

Cambiar el tamaño de los discos virtuales es complicado, pero se puede hacer con:

Resize-VHD -Path 'E:\HV\mun-prx2\mun-prx2.vhdx' -SizeBytes 50GB

Y si desea realizar una copia de seguridad o clonar máquinas virtuales, expórtelas primero:

Export-VM -Name "mun-prx2" -Path "C:\VHD\export"

Posteriormente podrás importar o clonar desde esa exportación.

Obtener direcciones IP de invitados y conectarse a máquinas virtuales

Para ver qué dirección IP está usando su sistema operativo invitado (suponiendo que es DHCP y la configuración de la red lo permite):

Get-VM | Select -ExpandProperty NetworkAdapters | Select VMName, IPAddresses, Status

Y para conectarse a la consola de una máquina virtual, utilice:

vmconnect.exe localhost mun-prx2

Para funciones más avanzadas como PowerShell Direct, que le permite ejecutar comandos directamente dentro de la máquina virtual sin configuración de red, utilice:

Invoke-Command -VMName mun-prx2 -ScriptBlock {Get-Process} Enter-PSSession -VMName mun-prx2

Y copiar archivos se puede hacer con:

$session = New-PSSession -VMName mun-prx2 -Credential (Get-Credential) Copy-Item -ToSession $session -Path E:\ISO\install.iso -Destination D:\ISO

Sí, parece mucho, pero una vez que lo entiendes, controlar Hyper-V desde PowerShell se convierte en una forma sencilla de administrar varias máquinas virtuales rápidamente. Solo recuerda revisar bien las rutas, los nombres de las máquinas virtuales y los adaptadores de red; ahí es donde suele haber problemas.

Resumen

  • Habilite Hyper-V con PowerShell, tanto en Windows Server como en las ediciones cliente.
  • Cree conmutadores virtuales basados ​​en sus adaptadores de red.
  • Implemente nuevas máquinas virtuales con `New-VM`, configure recursos y vincule discos.
  • Controle el estado de la máquina virtual con inicio/detención, instantáneas y exportación/importación.
  • Utilice PowerShell Direct para la administración interna del invitado sin complicaciones de red.

Resumen

Administrar Hyper-V mediante PowerShell puede parecer abrumador al principio, especialmente si las rutas o los comandos no funcionan como se espera; a veces, solo es cuestión de reiniciar o ajustar los permisos. Pero con un poco de paciencia, es una forma muy eficaz de mantener el entorno de tu máquina virtual bajo control sin tener que navegar constantemente por las interfaces gráficas. Esperamos que esto te ayude, aunque solo sea para automatizar algunas tareas o agilizar la configuración de tu máquina virtual.