J'avais déjà abordé la question de la consommation de RAM de WSUS à travers son pool applicatif IIS nommé WsusPool dans cet article ; j'ai décidé d'en faire un script Powershell afin de déclencher un recyclage du pool à distance.
Ce script va requêter le serveur via WinRM pour obtenir les informations concernant l'usage de la mémoire vive physique, et sur confirmation, déclencher à distance un recyclage du pool WsusPool.
function recycle{ Write-Host "Trying to start recycling in 5 seconds. Script will automatically end when recycling has successfully been initiated." Start-Sleep 5 Invoke-Command -ComputerName $iishost -ScriptBlock { Restart-WebAppPool WsusPool } } Write-Host "WSUS IIS Application Pool Recycler" Write-Host "==================================" Write-Host "" $iishost = Read-Host "Server to recycle the pool for ?" $hostdetails = Get-Ciminstance Win32_operatingsystem -ComputerName $iishost $hostramtotal = $hostdetails.TotalVisibleMemorySize $hostramused = $hostdetails.TotalVisibleMemorySize - $hostdetails.FreePhysicalMemory $hostramperc = [math]::Round(($hostramused/$hostramtotal)*100,0) $hostramtotal = [math]::Round($hostdetails.TotalVisibleMemorySize/1048576,0) Write-Host "% RAM used: $hostramperc" Write-Host "Server $iishost has $hostramtotal GB total memory." $confirm = Read-Host "Please confirm you wish to recycle the WsusPool IIS Application Pool on $iishost (yes)" if ($confirm -eq "yes") { recycle } else { Write-Host "Bye." ; break }
Au final, il est possible d'utiliser ce script pour n'importe quel pool car la commande Restart-WebAppPool est liée à IIS et pas spécialement à WSUS.