Búsqueda de sitios web

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 -Restart

En 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 -All

Para 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, MemoryCapacity

Utilizar el

Set-VMHost

para 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-VM

se 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 @VM

Este 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 2Gb

Para cambiar la cantidad de vCPU:

Set-VMProcessor mun-prx2 -Count 2

Habilite el inicio automático para una máquina virtual Hyper-V:

Get-VM -VMname mun-prx2 | Set-VM -AutomaticStartAction Start

Para 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-VM

El 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-app01

Para iniciar todas las máquinas virtuales detenidas:

Get-VM | where {$_.State -eq 'Off'} | Start-VM

Apague la máquina virtual (cierre correcto mediante Integration Services en el sistema operativo invitado):

Stop-VM -Name mun-app01

Para apagar la máquina virtual, se utiliza la opción TurnOff:

Stop-VM -Name mun-app01 -TurnOff

Obtenga 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.iso

Puede 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-app01

Puede ampliar o reducir un archivo de disco virtual utilizando el

Resize-VHD

cmdlet:

Resize-VHD -Path 'C:\VM\mun-fs01.vhdx' -SizeBytes 50Gb

Para 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-VMCheckpoint

Para restaurar una máquina virtual a su estado anterior desde un punto de control:

Restore-VMCheckpoint -Name "Before upgrading SAP" -VMName mun-app01 -Confirm:$false

Para 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 CaptureCrashConsistentState

Puede 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, Status

Para conectarse a una consola de máquina virtual:

vmconnect.exe localhost mun-app01

Puede 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-app01

Para 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.

Artículos relacionados