PowershellSistem
Powershell ve PowerCLI Modülünü Kullanarak Sanal Sunucuların Snapshot’ını Silme
Daha öncesinde Powershell ve PowerCLI Modülünü Kullanarak Sanal Sunucuların Snapshot’ını Alma – IT BackLogs yazısıyla elinizde listesi bulunan sunucuların toplu şekilde nasıl snapshotlarını alabileceğinizi anlattığımız bir yazıyı paylaşmıştık.
VMware tarafından best practices’ler de snapshotları 3 günden fazla tutulmaması gerektiğine yer verilmiş durumda buradan yola çıkarak sunucular üzerinde 3 günden eski olan snapshot’ları silen powershell kodumuzu yazalım;
# vCenter Sunucu Bilgileri
Connect-VIServer -Server Vcenter-Ip-Adres-veya-FQDN -User Bağlanıcak_KullanıcıAdı -Password Şifre
# Snapshot'ların bulunduğu VM'leri listele
$vmList = Get-VM
# Silinecek snapshot'lar için tarih hesapla (3 gün öncesinden önceki snapshot'lar)
$deleteDate = (Get-Date).AddDays(-3)
# Her bir VM üzerinde dön
foreach ($vm in $vmList) {
# VM'nin snapshot'larını listele
$snapshots = Get-VM $vm | Get-Snapshot
# Her bir snapshot üzerinde dön
foreach ($snapshot in $snapshots) {
# Snapshot'ın oluşturulma tarihini al
$snapshotCreateDate = $snapshot.Created
# Eğer snapshot tarihi 3 günden eski ise, snapshot'ı sil
if ($snapshotCreateDate -lt $deleteDate) {
Write-Host "Snapshot siliniyor: $($snapshot.Name) on $($vm.Name) oluşturulma tarihi $($snapshotCreateDate)"
Remove-Snapshot -Snapshot $snapshot -Confirm:$false
}
}
}
Daha önceki yazımızdan farklı olarak isminden anlaşılacağı üzere $deleteDate = (Get-Date).AddDays(-3) bugünün tarihinden 3 gün öncesini alıyoruz. Remove-Snapshot diyerek silmiş oluyoruz. Yaptığımız işlemlerin ne işe yaradığı genel olarak üzerlerinde yazıyor iyi okumalar dilerim.


