Administrando SnapShots con PowerShell + Wmi

Estos Script los saque de
http://blogs.msdn.com/taylorb/archive/2008/06/16/hyper-v-wmi-creating-applying-deleting-virtual-machine-snapshots.aspx

Modifique algunas cosas, ya que en la infraestructura de prueba tenemos 2 Hyper-v Server que no tienen powershell y otro hyper-v full que si la tiene, estos scripts se ejecutan desde un servidor remoto a los hyper-v Server que no tienen PS

Tomando SnapShots

#Servidor de Hyper-v
$SERVER_HOST = "hyperv-01"
#Nombre de la VM
$MasterVM = "2008"
 
$VM_Service = get-wmiobject -computer $SERVER_HOST -namespace rootvirtualization -class Msvm_VirtualSystemManagementService
$SourceVm = Get-WmiObject -Namespace rootvirtualization -Query "Select * From Msvm_ComputerSystem Where ElementName=’$MasterVM’" -ComputerName $SERVER_HOST
$result = $VM_Service.CreateVirtualSystemSnapshot($SourceVm)

Eliminando Snpashot de mas de 7 días de antigüedad

#Servidor de Hyper-v
$SERVER_HOST = "hyperv-01"
#Nombre de la VM
$MasterVM = "2008"
$VM_Service = get-wmiobject -computer $SERVER_HOST -namespace rootvirtualization -class Msvm_VirtualSystemManagementService
$SourceVm = Get-WmiObject -Namespace rootvirtualization -Query "Select * From Msvm_ComputerSystem Where ElementName=’$MasterVM’" -ComputerName $SERVER_HOST
$Snapshots = Get-WmiObject -Namespace rootvirtualization -Query "Associators Of {$SourceVm} Where AssocClass=Msvm_ElementSettingData ResultClass=Msvm_VirtualSystemSettingData" -ComputerName $SERVER_HOST
foreach ($Snapshot in $Snapshots)
{
   
$NombreFecha=$Snapshot.ElementName
   
$Fecha=$NombreFecha.Substring($MasterVM.Length+4,10)
   
if ((Get-date).AddDays(-1) -gt ([datetime]::ParseExact($Fecha, "dd-MM-yyyy", $null))) 
   
{
       
$result = $VM_Service.RemoveVirtualSystemSnapshot($Snapshot) 
   
} 
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *