بک‌آپ ویندوز سرور و ارسال ایمیل پس از اتمام بک‌آپ

در گذشته که به وسیله نوار بک‌آپ تهیه می‌کردند، خیلی راحت زمان تکمیل بک‌آپ را متوجه می‌شدند چون نوار از دستگاه خارج می‌شد. بسیاری از مشتریان فعلی که با استفاده از دستگاه‌های USB بک‌آپ می‌گیرند، لازم است به صورت دوره‌ای دستگاه‌های USB را خارج کنند و مجددا USB های جدید جایگزین کنند. عموما این موضوع به این دلیل که قبل از اتمام بک‌آپ، USB را از دستگاه خارج می‌کنند هنگامی‌که بک‌آپ کامل سرور درحال تهیه است، باعث قطع شدن بک‌آپ و ایجاد مشکل می‌شود.
یکی از این‌گونه مشتریان از ما درخواست کردند هنگامی که بک‌آپ سرور تکمیل می‌شود یک ایمیل برایش ارسال شود که به این وسیله متوجه شوند که بک‌آپ به اتمام رسیده و دستگاهی که بک‌آپ روی آن گرفته می‌شود را خارج کنند. سرویس بک‌آپ ویندوز سرور به صورت پیش‌فرض این‌کار را انجام نمی‌دهد، به همین دلیل ما دو کار به صورت برنامه‌ریزی شده با استفاده از اسکریپت‌های پاورشل انجام می‌دهیم که موفقیت یا عدم موفقیت در تهیه بک‌آپ را به صورت ایمیل ارسال نمایند.
با استفاده از Notepad یک اسکریپت Powershell ایجاد کنید و آن را با عنوان ‘EmailBackupResults.ps1’ در سرور ذخیره کنید. شما نیاز دارید که متغییرها را متناسب پیکربندی خود تغییر دهید.

# Set up variables
$SmtpServer = "192.168.1.1"
$SmtpPort = 25
$FromEmail = "admin-email-address"
$ToEmail = "recipient-email-address"
$OutputFile = "C:BackupEmailBackupResults.txt"

# Create backup results file
add-pssnapin windows.serverbackup
$NextBackup = Get-Date (Get-WBSummary | select "NextBackupTime" | ft -hide | out-string)
$LastBackup = (Get-Date $NextBackup) - (New-TimeSpan -day 1)
Get-WinEvent -LogName "Microsoft-Windows-Backup" | Where {$_.timecreated -ge $LastBackup} | Sort-Object TimeCreated | Format-Table TimeCreated, Message -AutoSize -Wrap | Out-File $OutputFile

# Construct and send email
$SmtpClient = new-object system.net.mail.smtpClient
$Msg = new-object Net.Mail.MailMessage
$SmtpClient.host = $SmtpServer
$SmtpClient.Port = $SmtpPort
$computer = gc env:computername
$Msg.From = $FromEmail
$Msg.To.Add($ToEmail)
$Msg.Subject = "## Backup Complete on " +$Computer +" ##"
$Msg.Body = "The backup for " +$Computer+" has completed. Please see the attached file for backup results."
$Msg.Attachments.Add($OutputFile)
$SmtpClient.Send($Msg)

در ادامه شما نیاز دارید یک scheduled task ایجاد کنید که اسکریپت Powershell را که شما ایجاد کرده‌اید را راه اندازی می‌کند. EmailBackupResults task به دو محرک پیکربندی شده که در شکل زیر نشان داده شده است، نیاز دارد. رویداد ۴ یک بک‌آپ موفق را نشان می‌دهد و رویداد ۵ یک بک‌آپ را نشان می‌دهد که failed شده است.

Backupserver1

 

Backupserver2

 

برای انجام این کار برنامه powershell.exe با یک دستور با آرگومان‌های “& C:BackupEmailEmailBackupResults.ps1” شروع می‌شود.
شما نیاز دارید که آرگومان‌های خود را برای مطابقت با محلی که اسکریپت را ذخیره کرده‌اید تغییر دهید.

Backupserver3

اکنون، بک‌آپ شما که به زودی کامل می‌شود (با موفقیت یا شکست) و به آدرس ایمیلی که در اسکریپت‌پیکربندی وارد کردید یک ایمیل تاییدیه ارسال می‌شود که بک‌آپ به اتمام رسیده است. یک فایل متنی هم همراه ایمیل است که شامل نتایج بک‌آپ می‌شود.
همچنین ممکن است شما نیاز به پیکربندی یک Mail server داشته باشید که ایمیل‌های ناشناس را از آدرس IP سرور بک‌آپ قبول می‌کند.