Windows Server Backup の結果をメールで通知する

まずは、Windows Server Backup のコマンドラインツール
wbadminコマンド について

1回のみバックアップ ※C,Dドライブを外付けHDDであるFドライブへバックアップ
wbadmin start backup -backuptarget:F: -systemState -include:C:,D: -allCritical -vssCopy -quiet

1回のみのバックアップジョブを途中で停止したい場合
wbadmin stop job

スケジュールバックアップ
wbadmin enable backup -addtarget:F: -schedule:19:00 -systemState -include:C:,D: -allCritical -vssCopy -quiet

スケジュールバックアップを無効に
wbadmin disable backup

PowerShellを使ったバックアップチェック

事前に、
PowerShellの実行ポリシー(Execution Policy)を変更しないと
.ps1 ファイルは実行できないので注意。

PowerShellのコンソールを起動し、
PS> Set-ExecutionPolicy RemoteSigned が必要

以下のサンプルコードを hogehoge.ps1  というファイル名で保存し
タスクスケジューラなどで.batファイルを呼ぶ形でスケジュール実行が可能

バッチファイルから.ps1ファイルを呼ぶには、
powershell -File C:\BackupCheck\BackupCheck.ps1

サンプルコード

#---------------Email Function---------------------
function SendEmail($To, $From, $Subject, $Body, $attachment, $smtpServer)
{
        Send-MailMessage -To $To -Subject $Subject -From $From -Body $Body -Attachment $attachment -SmtpServer $smtpServer
}
$emailto="hoge@docomo.ne.jp"
$emailfrom="piyo@ezweb.ne.jp"
$day=(get-date -f dd-MM-yyyy)
$hname="Server Name"
$backuplog="C:\BackupCheck\getversions.txt"
$emailserver="Server IP address" 

#-----------------Main------------------------------
wbadmin get versions > C:\BackupCheck\getversions.txt

$day=(get-date -f MM/dd/yyyy)

$Error.Clear()
$kekka = Select-String -path C:\BackupCheck\getversions.txt $day

if($kekka -eq $null){
        SendEmail -To "$emailto" -From "$emailfrom" -Subject "Backup $hname failed!!!!!" -Body "The backup has failed! Please check attached log." -attachment "$backuplog" -smtpServer "$emailserver"
        break 
}else{
SendEmail -To "$emailto" -From "$emailfrom" -Subject "Backup $hname OK." -Body "The backup has succeeded!" -attachment "$backuplog" -smtpServer "$emailserver"
}