Exportar Maquinas Virtuales con PowerShell +WMI
Hola a todos, les dejo este scripts que les puede servir para automatizar el respaldo de sus maquinas virtuales con hyper-v, solamente queda meterlo en el programador de tareas y lanzarlo las veces que quieran.
Recuerden que para exportar una maquina esta debe estar apagada o en estado guardado, asiq mientras se realiza la exportación la maquina queda sin conectividad
#Selecciono el hyper-v de Origen puede ser hyper-v en modo core o GUI
$HyperVHostOrigen="hyperv-01"
#Nombre de la maquina virtual a respaldar
$MasterVM="2008"
#Carpeta de destino del respaldo
$fecha = get-date
$dirMaquina = "D:\Backup\" + "Backup_" + $fecha.year + "_" + $fecha.month + "_" + $fecha.day
$VM_Service = get-wmiobject -computer $HyperVHostOrigen -namespace root\virtualization -class Msvm_VirtualSystemManagementService
$SourceVm = Get-WmiObject -Namespace root\virtualization -Query "Select * From Msvm_ComputerSystem Where ElementName='$MasterVM'" -ComputerName $HyperVHostOrigen
#Nos aseguramos que la maquina quede en estado Guardado
$SourceVm.RequestStateChange(32769)
#Le damos unos 15 segundos para que se pueda gurdar la maquina
sleep(15)
#Exportamos la maquina virtual
$Status = $VM_Service.ExportVirtualSystem($SourceVm.__PATH, $True, $dirMaquina)
#Generamos un par de validaciones para ver cuando se termine el trabajo
If ($status.ReturnValue -eq 4096)
{
$Job = [WMI]$Status.Job
$JobStatus = $Job.JobState
while ($JobStatus -ne 7)
{
sleep(1)
$Job = [WMI]$Status.Job
$JobStatus = $Job.JobState
echo $job.PercentComplete
}
}
#Iniciamos la amquina virtual
$SourceVm.RequestStateChange(2)

PD: Los valores de los RequestStateChange los saque del sitio de MSDN http://msdn.microsoft.com/en-us/library/cc723874%28VS.85%29.aspx