Sadly, the WSUS cleanup wizard neglects to clean up updates that were approved in the past but have been superseded since.
Because these updates tend to use a lot of diskspace, I use a short Powershell script that checks all updates for superseded updates and declines them. After this, the WSUS cleanup wizard can be run again to clear up diskspace.
################################################################
# #
# Script for cleaning up superseded updates in WSUS. #
# #
# #
# -Stefan van Bruggen #
# #
################################################################
# Change the WSUSserver variable to your server hostname
[String]$WSUSserver = "SERVERNAAM"
[Int32]$port =8530
[Boolean]$SecureConnection = $False
# .NET assembly WSUS inladen
[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
# Variable used for counting the total number of declined updates
$count = 0
# Connecting to server
$updateServer = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($WSUSserver,$SecureConnection,$port)
write-host "Connected to WSUS Server" -foregroundcolor "green"
$updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope
# Get the updates and check for superseded updates
$u=$updateServer.GetUpdates($updatescope)
foreach ($u1 in $u )
{
if ($u1.IsSuperseded -eq 'True')
# Declining superseded updates
{
write-host Declined Update : $u1.Title
$u1.Decline()
$count=$count + 1
}
}
write-host Total Declined Updates: $count
exit