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

PowerShell

WSUS管理コンソールから任意のタイミングで手動実行できることですが、
Powershellコマンドレットとタスクスケジュールを利用し定期的に掃除してもらうことができます。

WSUS管理コンソールから

image.png

PowerShellから

Powershell -Command "Invoke-WsusServerCleanup
-CompressUpdates
-CleanupObsoleteUpdates
-CleanupObsoleteComputers
-CleanupUnneededContentFiles
-DeclineExpiredUpdates
-DeclineSupersededUpdates" > C:\WSUS_Cleanup.log
$message = "WSUSクリーンアップ処理を開始します。"

Write-EventLog -LogName System -Source "WSUS Cleanup Task" -EventID 65000 -EntryType INFORMATION -Message $message

try{
    $result = (Invoke-WsusServerCleanup -CompressUpdates -CleanupObsoleteUpdates -CleanupObsoleteComputers -CleanupUnneededContentFiles -DeclineExpiredUpdates -DeclineSupersededUpdates)
    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
    }else{
        $message = "WSUSクリーンアップ処理が正常終了しましたが結果が空です。"
        Write-EventLog -LogName System -Source "WSUS Cleanup Task" -EventID 65002 -EntryType WARNING -Message $message
    }
}
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
}

解説

■不要な更新プログラムおよび更新のリビジョン
-CompressUpdate
-CleanupObsoleteUpdates

■サーバーにアクセスしていないコンピューター
-CleanupObsoleteComputers

■不要な更新ファイル
-CleanupUnneededContentFiles

■期限の切れた更新プログラム
-DeclineExpiredUpdates

■置き換えられた更新
-DeclineSupersededUpdates

コメント