Hyper-V: Tareas básicas con PowerShell

El módulo de Hyper-V para Windows PowerShell en Windows Server 2012 incluye más de 160 cmdlets para automatizar las tareas de administración de Hyper-V.

A continuación se presentan algunas operaciones básicas que realizamos con frecuencia con Hyper-V y como se podrían recrear por medio de PowerShell.

El uso de estos comandos es el punto de partida, sabiendo que se puede construir una serie de secuencias de comandos complejas utilizando varios cmdlets en diferentes escenarios.

Habilitar rol de Hyper-V

Lo primero que podemos verificar es si esta instalado el rol, para ello:

Get-WindowsFeature Hyper-V*

Y habilitamos el rol de la siguiente manera:

Install-WindowsFeature Name Hyper-V Restart IncludeAllSubFeature IncludeManagementTools

Este comando reiniciará el servidor, se recomienda guardar los datos antes de ejecutarlo.

Crear una Maquina Virtual

Lo primero que pensamos cuando hablamos de automatizar tareas en Hyper-V es crear maquinas virtuales.

Vamos a ver que tan fácil es crear uan VM desde PowerShell, con el siguiente comando:

New-VM [[-Name] \] \[[-MemoryStartupBytes\] ] -NewVHDPath -NewVHDSizeBytes \[-AsJob\] \[-BootDevice \] \[-ComputerName <String[]> \] \[-Path \] \[-SwitchName \] \[ \]

Aca tenemos un ejemplo para crear una VM :

New-VM -Name Server01 MemoryStartupBytes 1GB -NewVHDPath c:Server01.vhd -NewVHDSizeBytes 60GB

De la misma manera podemos crear un Switch Virtual mediante una sola línea de código, con el siguiente comando:

New-VMSwitch [-Name] -NetAdapterName [-AllowManagementOS \] \[-ComputerName <String[\]> ] \[-EnableIov \] \[-MinimumBandwidthMode \] \[-Notes \] \[ \]

Este sería un ejemplo para crear un Switch Virtual:

New-VMSwitch Name VSWITCH -NetAdapterName "Ethernet 2"

Hyper-V Live Migration:

La migración en vivo con Hyper-V es posible con o sin storage, del mismo modo que si se encuentra en un clúster o no. Se pueden especificar direcciones IP para utilizar exclusivamente en la migración, como también se pueden establecer varias migraciones de maquinas virtuales al mismo tiempo permitiendo una mayor flexibilidad.

Para habilitar Live Migration, simplemente debemos ejecutar:

Enable-VMMigration

Para iniciar una migración de una VM, debemos de ejecutar este comando:

Move-VM [-Name] [-DestinationHost] [-AsJob\] \[-ComputerName <String[\]> ] \[-DestinationStoragePath \] \[-IncludeStorage\] \[-Passthru\] \[-ResourcePoolName \] \[-RetainVhdCopiesOnSource\] \[-SmartPagingFilePath \] \[-SnapshotFilePath \] \[-Vhds <Hashtable[\]> ] \[-VirtualMachinePath \] \[-Confirm\] \[-WhatIf\] \[ \]

Un ejemplo de uso:

Move-VM Name Server01 DestinationHost Host01 DestinationStoragePath 'C:VMS'

Además, dependiendo del ancho de banda, se pueden realizar múltiples migraciones en vivo. Esto puede ser controlado ajustando la cantidad de migraciones utilizando la siguiente linea de PowerShell:

Set-VMHost MaximumVirtualMachineMigrations [number]

Happy scripting!

Comments