Windowsバックアップの結果通知は、タスクスケジューラにて成功/失敗のイベントログをトリガーにしたタスクを作るよう説明しているサイトが多い。 が、自社の環境ではちょいちょい通知が来ないことがある。イベントログを確認してみると記録はされている。イベントログのトリガは不安定と感じている。
そこで、直接成功/失敗のイベントログを見に行って、その結果をもとに通知するほうが確実と判断。現在テスト中。 以下がとても参考になった。
https://stackoverflow.com/questions/51769582/powershell-script-not-pulling-event-from-event-log
実際には以下のようなコードで運用している
# 何時間前までのログを対象にするか
$PastHours=12
$StartAt = (Get-Date).AddHours(-$PastHours)
# バックアップ成功時に記録されるイベントログ
$FilterHashTable = @{
logname = "Microsoft-Windows-Backup"
id = 4
StartTime = $StartAt
}
try{
$actions = (Get-WinEvent -FilterHashtable $FilterHashTable -ErrorAction Stop)
if ($actions){
ForEach($action in $actions){
Write-Host "OK: Windows Backup Completed Successfully at $(($action.Task)),$(($action.TimeCreated))"
Exit 0
}
}else{
Write-Host "CRITICAL: Windows Backup has not run in past $PastHours hours"
exit 1
}
}catch [Exception] {
Write-Host "CRITICAL: Windows Backup has not run in past $PastHours hours"
Exit 1
}