BİR BİLİŞİMÇİNİN GÜNLÜĞÜ
PowerShell Script ile HyperV Yedekleme

Merhaba arkadaşlar , Bu script ile hyperv sanal makinelerinizi Otomatik yedekleyebilirsiniz.

Özellikler:

Tarih saat bilgini alır.

Log alır.

Mail Parolası Şifrelenmiştir.

Mail Gönderir.

Mail parolası oluşturmak için aşağıdaki kodu powershellde çalıştırın:

 $securePassword = Read-Host "Parolanizi Girin" -AsSecureString; $securePassword | ConvertFrom-SecureString | Set-Content "C:\Scripts\credentials.encrypted"

Bu kod C:\Scripts\ dizininde credentials.encrypted isminde bir dosya oluşturacaktır isterseniz buradaki dizinide değiştirip daha farklı bir alanda saklayabilirsiniz.

C:\Scripts\Backup-HyperV.ps1 dizinine script dosyasını oluşturun. (Sizin kurgunuza göre farklı bir alandada oluşturabilirsiniz önemli olan görev zamanlayıcıda ilgili dizini göstermektir.)

 # -------------------- Ayarlar -------------------- $vmName = "Sanal Makine Adı" # <-- Buraya yedeklenecek VM'in adını yaz $backupRoot = "SanalMakineYedeklemeDizini\$vmName" $maxBackups = 3 #Kaç adet yedek alsın bir öncekini siler $timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm" $backupPath = Join-Path $backupRoot "$vmName-$timestamp" $logPath = Join-Path $backupRoot "BackupLog-$timestamp.log" # Mail ayarları (Gmail için) $gmailUser = "Mail adresiz" $encryptedPasswordFile = "Şifreyi oluşturduğunuz dizin\credentials.encrypted" $mailTo = "GonderilecekMail" $smtpServer = "smtp.gmail.com" $smtpPort = 587 # Şifreli dosyadan gmail şifresini oku try { $securePassword = Get-Content $encryptedPasswordFile | ConvertTo-SecureString $gmailPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($securePassword)) } catch { Write-Error "Şifreli dosya okunamadı. Lütfen şifre dosyasını oluşturun." exit 1 } # -------------------- Log Başlat -------------------- Start-Transcript -Path $logPath -Append # -------------------- Yedekleme İşlemi -------------------- $backupSuccess = $false try { Write-Host "[$timestamp] Yedekleme basliyor: $vmName" Export-VM -Name $vmName -Path $backupPath -ErrorAction Stop Write-Host "[$timestamp] Yedekleme tamamlandi: $backupPath" $backupSuccess = $true # Eski yedekleri temizle $backups = Get-ChildItem -Path $backupRoot -Directory | Where-Object { $_.Name -like "$vmName-*" } | Sort-Object LastWriteTime -Descending if ($backups.Count -gt $maxBackups) { $backupsToDelete = $backups | Select-Object -Skip $maxBackups foreach ($item in $backupsToDelete) { Write-Host "Eski yedek siliniyor: $($item.FullName)" Remove-Item -Path $item.FullName -Recurse -Force } } } catch { $errorMsg = $_.Exception.Message Write-Error "HATA OLUŞTU: $errorMsg" } # -------------------- Log Durdur -------------------- Stop-Transcript # -------------------- Mail Gönder -------------------- if ($backupSuccess) { $body = @" Hyper-V VM yedegi basariyla alindi. VM: $vmName Tarih: $timestamp Konum: $backupPath Log dosyasi ekte yer almaktadir. "@ $subject = "Yedekleme Basarili ($vmName)" } else { $body = @" HATA! Hyper-V VM yedek alinamadi. VM: $vmName Tarih: $timestamp Log dosyası ekte detaylı bilgi icerir. "@ $subject = "Yedekleme Hatasi ($vmName)" } Send-MailMessage -From $gmailUser -To $mailTo -Subject $subject ` -Body $body -SmtpServer $smtpServer -Port $smtpPort -UseSsl ` -Credential (New-Object System.Management.Automation.PSCredential($gmailUser, (ConvertTo-SecureString $gmailPassword -AsPlainText -Force))) ` -Attachments $logPath Write-Host "Mail gonderildi: $subject"

Görev zamanlayıcıya eklemek için İlgili görseller.

Denetim Masası\Tüm Denetim Masası Öğeleri\Yönetimsel Araçlar\ Görev Zamanlayıcıyı açın, daha sonra orta penceredeyken mause sağ tık yeni görev oluştur seceneğini tıklayınız ve resimleri takip ederek alanları doldurun.

 Bağımsız Değişken ekle kısmına bu kodu yazın -ExecutionPolicy Bypass -File "C:\Scripts\Backup-HyperV.ps1" -NoProfile -NoLogo

İlgili İşlemler bukadar Oluşturduğunuz göreve çalıştır diyerek test edebilirizsiniz. Yararlı olması dileğiyle

0 0 Oylar
Yazıya Puan Ver
Abone Ol
Bildir
guest
2 Yorum
Eskiler
En Yeniler Beğenilenler
Satır İçi Geri Bildirimler
Tüm yorumları görüntüle
Kasım BULUT
Kasım BULUT
5 ay önce

Harika bir bilgi teşekkürler uygulayıp deneyeceğim.

Scroll to Top
2
0
Düşüncelerinizi çok isterim, lütfen yorum yapın.x