Ежедневное резервное копирование давно является насущной необходимостью. Но, к сожалению, и диски могут ломаться, и электричество иногда выключатся, и просто могут происходить программные сбои. Настроив один раз резервное копирование нельзя быть на 100 процентов уверенным, что все работает как раньше.
Как сделать так, чтобы результат выполнения резервного копирования средствами Windows Server 2008/12/16 приходил на электронную почту?
Мы настроим оповещение по событию в Event Log. Может быть два варианта – резервное копирование выполнено или не выполнено. Соответственно в каждом отдельном случае будет запускаться свой скрипт Powershell для отправки сообщения.
Скрипт № 1. Резервное копирование завершено c ошибками / не завершено.
$HName = [System.Net.Dns]::GetHostEntry([string]”localhost”).HostName
$EmailFrom = ‘mail’
$EmailTo = ‘system_info@admin812.ru‘
$Subject = ‘Notification from SERVER1‘
$Body = (‘ERROR!!! Please check server backup’,$HName)
$SMTPServer = ‘smtp.google.com‘
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(‘mail‘, ‘password‘);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
Скрипт № 2. Резервное копирование завершено удачно.
$HName = [System.Net.Dns]::GetHostEntry([string]”localhost”).HostName
$EmailFrom = ‘mail‘
$EmailTo = ‘system_info@admin812.ru‘
$Subject = ‘Notification from SERVER1‘
$Body = (‘Backup complete server’,$HName)
$SMTPServer = ‘smtp.google.com‘
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(‘mail‘, ‘password‘);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
То, что выделено красным – замените на свои данные.
system_info@admin812.ru – адрес, на который будет отправлено письмо.
mail и password – замените на свой адрес электронной почты и пароль.
smtp.google.com – адрес сервера отправки. В нашем случае это Gmail.
SERVER1 – имя целевого компьютера.
Сохраним оба скрипта под именами, например, error_ backup.ps1 и ok_backup.ps1 соответственно.
Далее проверяем выполняется ли скрипты. Если вы видите надпись “Невозможно загрузить файл C:\script\error_backup.ps1, так как выполнение сценариев отключено в этой системе” необходимо запустить Powershell с правами администратора и выполнить команду:
Set-ExecutionPolicy Unrestricted
Следующий шаг – создание в планировщике Windows заданий, которые будут запускаться после завершения (удачного или неудачного) резервного копирования.
Перейдем Пуск -> Панель управления -> Администрирование -> Планировщик заданий.
Выберем создание новой задачи.
Придумаем имя задаче, краткое описание и укажем, что задача должна выполняться для всех пользователей.
Перейдем в раздел “Триггеры”. Выберем: “Начать задачу” – “При событии”. Далее – “Настраиваемое”, “Создать фильтр события”
В разделе “Создание фильтр события” выбираем “По журналу” -> “Журнал приложений и служб” ->” Microsoft” -> “Windows” -> “Backup”. “Источник событий” – “Backup”. Прописываем коды событий, относящиеся к неудачному завершению резервного копирования:
5,8,9,17-22,49,50,52,100,517,518,521,527,528,544,545,546,561,564,612
Переходим в пункт “Действие”, в котором выбираем запуск скрипта error_backup.ps1
В случае появления какой-либо ошибки в логах при бекапе запустится скрипт и придет оповещение на электронную почту.
По аналогии настроим оповещение об удачном завершении. Создаем новую задачу, придумываем ей имя.
Создаем триггер и в настройках фильтра событий указываем “4” – код успешного завершения резервного копирования.
В “Действии” выбираем запуск скрипта ok_backup.ps1
В заключении проверяем работоспособность.