Administración de máquinas virtuales Hyper-V con PowerShell
Este artículo trata sobre la administración de máquinas virtuales Hyper-V desde la consola de PowerShell. Veremos cómo crear conmutadores virtuales y máquinas virtuales, cambiar la configuración de las máquinas virtuales y administrar las máquinas virtuales. Puede usar estos comandos para administrar manualmente sus máquinas virtuales Hyper-V o en sus scripts de PowerShell para automatizar varias tareas.
Cómo habilitar el rol de Hyper-V en Windows Server y Windows 10/11
Para instalar el rol de Hyper-V, un host debe tener una CPU habilitada para SLAT con soporte de virtualización. En Windows Server, se usa el siguiente comando de PowerShell para instalar el rol de Hyper-V:
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -RestartEn las ediciones de escritorio (Windows 10 y 11), el rol de Hyper-V se instala de la siguiente manera:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -AllPara administrar un host Hyper-V, el módulo Hyper-V PowerShell debe estar instalado en la computadora. Puede mostrar una lista completa de los comandos disponibles (dependen de su versión de Windows) de la siguiente manera:
Get-Command -Module hyper-v
En Windows Server 2022, hay 245 cmdlets disponibles en el módulo Hyper-V.
Para mostrar una lista de configuraciones de host de Hyper-V, use el siguiente comando:
Get-VMHost|fl *Para mostrar solo la información sobre la cantidad de núcleos de CPU y RAM disponibles:
Get-VMHost| select LogicalProcessorCount, MemoryCapacityUtilizar el
Set-VMHostpara cambiar la configuración del host de Hyper-V. El siguiente comando cambiará las rutas predeterminadas a los discos virtuales y archivos de configuración de VM:
Set-VMHost -VirtualMachinePath E:\VMs -VirtualHardDiskPath E:\VMs\VHD'Cree un conmutador virtual de Hyper-V con PowerShell
En primer lugar, cree un conmutador virtual en su host Hyper-V. Las máquinas virtuales solo pueden acceder a la red a través de un conmutador virtual.
Mostremos una lista de adaptadores de red físicos disponibles en el host de Hyper-V:
Get-NetAdapter | where {$_.status -eq "up"}Si su servidor es compatible con SR-IOV (virtualización de entrada/salida (E/S) de raíz única), tenga en cuenta que debe habilitar la opción al crear su conmutador. No puede habilitar SR-IOV para un vSwitch existente. Obtenga más información sobre cómo habilitar la compatibilidad con SR-IOV para máquinas virtuales Hyper-V.
Cree un conmutador virtual externo:
New-VMSwitch -Name "ExternalVMSwitch" -AllowManagementOS $True -NetAdapterName Ethernet0 -SwitchType External
Crear una máquina virtual Hyper-V usando PowerShell
Para crear una nueva máquina virtual Hyper-V, el
New-VMse utiliza el cmdlet. En este ejemplo, crearemos una nueva VM de generación 2 con 1 GB de RAM y un disco VHDX de 10 GB.
$VMName = "mun-prx2"
$VM = @{
Name = $VMName
MemoryStartupBytes = 1Gb
Generation = 2
NewVHDPath = "E:\HV\$VMName\$VMName.vhdx"
NewVHDSizeBytes = 10Gb
BootDevice = "VHD"
Path = "E:\HV\$VMName"
SwitchName = "ExternalVMSwitch"
}
New-VM @VMEste es un ejemplo del uso de PowerShell para crear una máquina virtual de Windows 11 en Hyper-V.
Veamos los comandos que puede usar para cambiar la configuración de la máquina virtual.
Para aumentar el tamaño de RAM para una VM:
Get-VM -Name mun-prx2| Set-VMMemory -StartupBytes 2GbPara cambiar la cantidad de vCPU:
Set-VMProcessor mun-prx2 -Count 2Habilite el inicio automático para una máquina virtual Hyper-V:
Get-VM -VMname mun-prx2 | Set-VM -AutomaticStartAction StartPara conectar un disco virtual adicional a la máquina virtual, cree primero el archivo vhdx:
New-VHD -Path 'C:\VM\new-prx2-drive.vhdx' -SizeBytes 2GB
Y luego conéctelo a su VM:
Add-VMHardDiskDrive -VMName mun-prx2 -Path 'C:\VM\new-prx2-drive.vhdx'¿Cómo administrar máquinas virtuales Hyper-V con PowerShell?
Para mostrar una lista de máquinas virtuales en un host Hyper-V:
Get-VMEl comando devuelve la lista de máquinas virtuales con algunas propiedades básicas. Para mostrar todas las propiedades de la máquina virtual, ejecute el siguiente comando:
Get-VM -Name mun-dmz1 | fl *Para mostrar solo máquinas virtuales en ejecución:
Get-VM | where {$_.State -eq 'Running'}Para iniciar una máquina virtual:
Start-VM -Name mun-app01Para iniciar todas las máquinas virtuales detenidas:
Get-VM | where {$_.State -eq 'Off'} | Start-VMApague la máquina virtual (cierre correcto mediante Integration Services en el sistema operativo invitado):
Stop-VM -Name mun-app01Para apagar la máquina virtual, se utiliza la opción TurnOff:
Stop-VM -Name mun-app01 -TurnOffObtenga información sobre cómo detener una máquina virtual Hyper-V que no responde.
Monte el archivo ISO en un dispositivo de CD/DVD virtual:
Set-VMDvdDrive -VMName mun-app01 -Path c:\iso\WinSrv2022.isoPuede usar el paso de USB para redirigir el dispositivo USB (medios/unidad) a una máquina virtual Hyper-V.
Para mover todos los archivos de VM a otro disco sobre la marcha, use el siguiente comando:
Move-VMStorage mun-app01 -DestinationStoragePath D:\VM\mun-app01Puede ampliar o reducir un archivo de disco virtual utilizando el
Resize-VHDcmdlet:
Resize-VHD -Path 'C:\VM\mun-fs01.vhdx' -SizeBytes 50GbPara crear un punto de control (instantánea) de una VM:
Get-VM -Name mun-app01| Checkpoint-VM -SnapshotName "Before upgrading SAP"Para mostrar una lista de puntos de control disponibles:
Get-Vm -Name mun-app01| Get-VMCheckpointPara restaurar una máquina virtual a su estado anterior desde un punto de control:
Restore-VMCheckpoint -Name "Before upgrading SAP" -VMName mun-app01 -Confirm:$falsePara eliminar una instantánea:
Remove-VMCheckpoint -VMName mun-app01 -Name "Before upgrading SAP"En este artículo se describe cómo exportar, importar y clonar una VM en Hyper-V:
Export-VM -Name mun-app01 -Path 'C:\VHD\export' -CaptureLiveState CaptureCrashConsistentStatePuede usar la copia de seguridad del servidor de Windows (WSB) integrada para hacer una copia de seguridad de las máquinas virtuales de Hyper-V.
Para obtener las direcciones IP del sistema operativo invitado de las máquinas virtuales:
Get-VM | Select -ExpandProperty NetworkAdapters | Select VMName, IPAddresses, StatusPara conectarse a una consola de máquina virtual:
vmconnect.exe localhost mun-app01Puede usar PowerShell Direct para conectarse directamente a los sistemas operativos invitados de máquinas virtuales a través de vmbus (disponible en Windows Server 2016, Windows 10 y versiones posteriores). Use Invoke-Command (para ejecutar scripts) y Enter-PSSession (para ejecutar una sesión interactiva de PowerShell):
Invoke-Command -VMName mun-app01 -ScriptBlock {Get-Process}
Enter-PSSession -VMName mun-app01Para copiar archivos de un host de Hyper-V a una máquina virtual mediante PowerShell Direct, use el siguiente comando:
$PSSession = New-PSSession -VMName mun-app01 -Credential (Get-Credential)
Copy-Item -ToSession $PSSession -Path E:\ISO\install_image.iso -Destination D:\ISO\Puede usar PowerShell para administrar máquinas virtuales en hosts de Hyper-V de forma local o remota (en los modos de Windows Server Full GUI o Server Core, en Windows Hyper-V Server gratuito o Windows 10) junto con herramientas gráficas como la consola del Administrador de Hyper-V o el Centro de administración de Windows.






