IT PowerShell Windows Windows Server 2016 Windows Server 2019 WSUS

【PowerShell】WSUSのクリーンアップを定期的に自動実行3

更新日:

前回の記事(【PowerShell】WSUSのクリーンアップを定期的に自動実行2)でメール送信はやめました。と書いたのですが結局メール送信するバージョンも作ってみました。

イベントログに書き込みつつメール送信も実装したバージョンですので、要望に合わせて前回または今回のものを実装すればよいのではないかと思います。

 

PoweShell スクリプト

以下のソースを 任意の名前.ps1 で保存します。

<# メール送信設定 #>
function SendMail{
$ToADDR = "宛先メールアドレスを指定します。複数の場合は ,(カンマ区切りで) "
$FromADDR = "送信者メールアドレスを指定します。"
$SMTP = "SMTPサーバーをIPアドレスかFQDN名で指定します。"
$PortNo = "SMTPサーバーのポート番号を指定します。"

<# メール送信処理 #>
Send-MailMessage -To $ToADDR -From $FromADDR -SmtpServer $SMTP -Port $PortNo -Subject "$Subject" -Body $MailBody -Encoding UTF8
}

<# WSUSクリーンアップ処理 #>
$message = "WSUSクリーンアップ処理を開始します。"
Write-EventLog -LogName System -Source "WSUS Cleanup Task" -EventID 65000 -EntryType INFORMATION -Message $message
try{
$result = (Invoke-WsusServerCleanup -CompressUpdates -CleanupObsoleteUpdates -CleanupObsoleteComputers -CleanupUnneededContentFiles)
if($result -ne $null){
$message = "WSUSクリーンアップ処理が正常終了しました。`r`n`r`n"+$result
Write-EventLog -LogName System -Source "WSUS Cleanup Task" -EventID 65001 -EntryType INFORMATION -Message $message
$Subject = "WSUSクリーンアップ正常終了"
$MailBody = $message
SendMail
}else{
$message = "WSUSクリーンアップ処理が正常終了しましたが結果が空です。"
Write-EventLog -LogName System -Source "WSUS Cleanup Task" -EventID 65002 -EntryType WARNING -Message $message
$Subject = "WSUSクリーンアップ警告終了"
$MailBody = $message
SendMail
}
}
catch{
$message = $error[0].Exception.Message
$message = "WSUSクリーンアップ処理がエラー終了しました。`r`n`r`n"+$message
Write-EventLog -LogName System -Source "WSUS Cleanup Task" -EventID 65003 -EntryType ERROR -Message $message
$Subject = "WSUSクリーンアップ異常終了"
$MailBody = $message
SendMail
}

実行すると以下のような形でメールが届きます。

補足

今回ご紹介のスクリプトを使う場合も前回の記事の「はじめに」でご紹介した手順にある以下は実行してください。

 

Poweshell を管理者モードで起動して、

New-EventLog -LogName System -Source "WSUS Cleanup Task"

 

おわりに

イベントログを監視して指定したイベントが書き込まれたらリアルタイムでメールを送信する方法も検討したのですが、今回は簡単な方法でやらせていただきました。

前者の方法だと指定したイベントを変更するだけで、今回のWSUSに限らずWindowsで発生する様々なエラー監視にも使えるかなっと思ったのですが悩んだのですがちょっと時間かかりそうだったので。。。

 

-IT, PowerShell, Windows, Windows Server 2016, Windows Server 2019, WSUS
-, , ,

Copyright© Live Free , 2020 All Rights Reserved.