Eseguire WSUS 3.0 Cleanup Manager via Powershell
Il nuovo Windows Server Update Services (WSUS) 3.0 dispone di un wizard nella GUI per procedere al cleanup del server, onde rimuovere materiale obsoleto e recuperare spazio sia dal DB SQL che dal file system (directory WSUS\WsusContent).
Nelle precedenti versioni di WSUS, si svolgevano (quasi) le stesse operazioni con alcuni batch e tools esterni, ma la cosa risultava alquanto scomoda.
Ovviamente WSUS 3.0 ha un modello a oggetti rinnovato rispetto alla 2.0 e mi sono chiesto se fosse possibile creare una script con Powershell per svolgere su base programmatica il task di manutenzione. Ovviamente ... si può !
Cominciamo a caricare il solito assembly per accedere a WSUS, poi istanziamo l'oggetto AdminProxy e recuperiamo l'istanza del server WSUS:
[System.Reflection.Assembly]::LoadWithPartialName('microsoft.updateservices.administration')
$wsus=new-object 'Microsoft.UpdateServices.Administration.AdminProxy'
$wsusrv=$wsus.GetUpdateServerInstance()
Ora istanziamo un oggetto CleanUpManager ed uno CleanUpScope, per invocare l'azione sulla base di una serie di flag di Cleanup desiderati.
Write-Host 'Invoking WSUS CleanUpManager:' -fore Green
$cm=$Wsusrv.GetCleanupManager()
$cs=new-object 'Microsoft.UpdateServices.Administration.CleanupScope'
Impostiamo i valori di CleanUp desiderati, semplicemente settando le vari eproprietà a $True. Di default sarebbero tutte a $False, quindi l'invocazione del CleanUpManager non darebbe alcun effetto.
#$cs.CleanupObsoleteComputers = $True
$cs.CleanupObsoleteUpdates = $True
$cs.CleanupUnneededContentFiles = $True
Ora siamo pronti, invochiamo il metodo PerformCleanUp e attendiamo un pò di minuti:
# Run !
$cm.PerformCleanup($cs)
L'output sarà un sommario delle azioni intraprese e dello spazio su disco liberato, sulla base dei valori di CleanUpScope scelti. Non resta che schedulare l'esecuzione periodica della script tramite powershell.exe e il task scheduler di Windows Server.
Ciao, Claudio
* Versione 1.0.0, di Wsus-CleanUp.ps1 pubblicata il 20070522
MCSA, MCSE, MCT su NT/2000/2003
MCTS: Windows Server 2008 Active Directory/Application Platform/Network Infrastructure