Microsoft a intégré dans WSUS un outil de nettoyage car, comme la base de registre, la base d’update grossi de manière exponentielle.
On peut aussi faire nettoyage, l’approbation et le rejet de mise à jour via Powershell
Je ne vous expliquerais pas comment faire un script PowerShell, je n’ai pas la prétention d’être un développeur PowerShell, à la limite un Power USer.
Avec PowerShell pour travailler avec WSUS, il vaut mieux importer le module UpdateServices
.
PVI (Pour Votre Information) ce module est disponible sur Windows 2012 et supérieur ainsi que Windows 10.
Par exemple, j’ai intégré cette ligne dans mon script PowerShell :
Import-Module -Name UpdateServices
Après avoir importer le module, on peut le tester :
Get-Command -Module UpdateServices
Il y a 12 cmdlets qui sont totalement exploitable selon ses besoins.
On peut aussi avoir les information à propos de son Serveur WSUS. Pour cela, il suffit d’utiliser la cmdlet Get-WSUSServer.
Normalement en local Get-WSUSServer
donne ça :
Mais ça peut aussi faire l’affaire :
Get-WSUSServer -Name REMPLACER_PAR_LE_NOM_DE_ServerWSUS -Port 8530
On peut avoir le status des ordinateurs clients du WSUS avec Get-WsusComputer
On peut ainsi, par exemple, connaitre le status des ordinateurs qui ont échoué des mises à jours
Get-WSUSComputer -ComputerUpdateStatus Failed
Si vous faites appel à Get-WSUSUpdate sans rien mettre en option, cela vous donne toutes les mises à jours disponible.
En spécifiant –Approval de Unapproved avec –Status Needed on rapatrie les mise à jours approuvable au statut « needed ».
Get-WsusUpdate -Approval Unapproved -Status Needed
Approving Updates from WSUS
We can then make use of Approve-WSUSUpdate by passing each of the updates found using Get-WSUSUpdate into this cmdlet to ensure that these updates will be available for installation on the systems that require them.
Pour approuver les mises à jours. On peut passer cette commande
Get-WsusUpdate -Approval Unapproved -Status Needed | Approve-WsusUpdate -Action Install -TargetGroupName 'All Computers'
Et si on veut voir ce que cela va donner sans réellement l’appliquer on utilise -WhatIf
Get-WsusUpdate -Approval Unapproved -Status Needed | Approve-WsusUpdate -Action Install -TargetGroupName 'All Computers' -WhatIf
Pour refuser les mises à jours
Get-WsusUpdate -Approval Unapproved -Status Any | Where {$_.update.title -match "Language"} | Deny-WsusUpdate –Verbose
Pour nettoyer le serveur WSUS
Invoke-WsusServerCleanup -CleanupObsoleteComputers -CleanupObsoleteUpdates -CleanupUnneededContentFiles -CompressUpdates -DeclineExpiredUpdates -DeclineSupersededUpdates
Pour ma part, j’ai modifié un script que j’avais trouvé sur le TecNet Center de Microsoft, et qui se trouve sur GitHub https://github.com/theodiousolivetree/deployadmin_scripts/blob/master/approve-reject_updates