はじめに
WSUS(Windows Server Update Services)で、更新プログラム一覧をCSVで出力するPowerShellコマンドの紹介と、出力された結果から更新プログラムを個別に指定してドで拒否するPowerShellコマンドを紹介します。
WSUSは、必要のない更新プログラムを拒否にすることで、CPU負荷の低減、ディスク使用量の低減になり、WSUSサーバーを運用するうえで必ず定期的に行う必要があります。
また、自動や条件指定で一括で拒否にするPowerShellコマンドは情報があるのですが、一旦CSVに出力してExcelなどで更新プログラムを確認してから、個別に指定して拒否する方法があまりなかったので、この方法を紹介します。
WSUSの更新プログラム一覧をCSVで出力する
出力先のパスは適宜変更ください。
PS> #WSUS更新プログラムCSVリスト出力
PS> Import-Module UpdateServices
PS> $wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
PS> $allUpdates = $wsus.GetUpdates()
PS> $allUpdates | Select-Object Title, @{Name='KnowledgebaseArticles';Expression={$_.KnowledgebaseArticles}},UpdateClassificationTitle, LegacyName,CreationDate, IsApproved,IsDeclined | Export-Csv -Encoding UTF8 -NoTypeInformation -path c:\temp\wsuslist.csv
個別に更新プログラムを指定して拒否済みにする
「LegacyName」を指定して拒否にするコマンド
※「LegacyName」が一意であることを確認してから実行してください。
※CSV出力を行ったコンソールから実行する前提です。
パッチを指定で拒否する(このコマンドのみを繰り返し実行可能)
PS> ($allUpdates | where-object{$_.LegacyName -eq 'q309521_xp_4973'}).Decline()
「Title」を指定して拒否にするコマンド
※「Title」が一意であることを確認してから実行してください。
PS> ($allUpdates | where-object{$_.Title -eq 'Windows XP Update Package, October 25, 2001'}).Decline()
参考
また、SCCMのソフトウェア更新ポイントで使用するWSUSも同様に、拒否にする運用が必要になります。