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"
$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"
$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)
}
}
$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)
}
}