Decline automatico di Updates in WSUS
Una esigenza
frequente con WSUS, è quella di effettuare il decline degli aggiornamenti non
più necessari, per ridurre il numero di elementi offerti inutilmente ai
computer target di WSUS e poter poi eseguire le operazioni di manutenzione del
DB/Contents con efficacia.
Un esempio
tipico sono le definizioni antispam/antivirus legate a Exchange 2007, Vista e i prodotti ForeFront. Dato il tasso di
uscita e di obsolescenza, questa attività fatta manualmente è quasi
improponibile.
Ho scritto
una breve script, basandomi sul codice del mio precedente post su
WSUS e PowerShell, che può essere schedulata per l'esecuzione periodica.
Ecco il
codice ed il link per il download:
#
Decline-ObsoleteDefinition.ps1
# CG 20070308 - v. 1.0.0
$wsus=new-object 'Microsoft.UpdateServices.Administration.AdminProxy'
$wsusrv=$wsus.GetUpdateServerInstance()
$oldDefinition = $wsusrv.GetUpdates() | where {($_.UpdateClassificationTitle
-eq 'Definition Updates') -and ($_.Isdeclined -eq $False) -and ($_.IsSuperseded
-eq $True)}
if ($oldDefinition.Count -gt 0)
{
$oldDefinition | ft -prop
Title,Description,ArrivalDate
$oldDefinition
| % {$_.Decline()}
Write-Host
$oldDefinition.Count "Definizioni obsolete declinate."
} else
{
Write-warning
"Nessuna Definizione obsoleta da Declinare."
}
# EOF
Sulla
falsariga di questo esempio, è possibile anche declinare automaticamente tutti
gli update per Itanium (ia64), che in tutte le molte installazioni non
servono. ( SNORT! ma un sistema più intelligente per filtrarle in WSUS non
potevano farlo @#!-|* )
Ecco il codice ed il link per il download:
#
Decline-Itanium.ps1
# CG 20070313 - v. 0.9.0
$wsus=new-object 'Microsoft.UpdateServices.Administration.AdminProxy'
$wsusrv=$wsus.GetUpdateServerInstance()
$ia64Updates = $wsusrv.GetUpdates() | where { ($_.Isdeclined -eq $False) -and
(($_.Title -match "ia64") -or ($_.Title -match "itanium"))}
if ($ia64Updates.Count -gt 0)
{
$ia64Updates
| ft -prop Title,Description,ArrivalDate
$ia64Updates | % {$_.Decline()}
Write-Host $ia64Updates.Count "Update per Itanium
(ia64) declinati."
} else
{
Write-warning
"Nessun Update per Itanium (ia64) da Declinare."
}
# EOF
Bene, anche per oggi PowerShell ci ha stupito ;-)
C.
MCSA, MCSE, MCT su NT/2000/2003
MCTS: Windows Server 2008 Active Directory/Application Platform/Network Infrastructure