Decline automatico di Updates in WSUS

Published 14 March 07 11:47 AM | claudiog 

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. 

Filed under: ,
Anonymous comments are disabled

About claudiog

MCSA, MCSE, MCT su NT/2000/2003