Auto-commit: 2025-10-31 08:55:43
This commit is contained in:
32
cleanup-server/CleanupWSUS.ps1
Normal file
32
cleanup-server/CleanupWSUS.ps1
Normal file
@@ -0,0 +1,32 @@
|
||||
#Requires -RunAsAdministrator
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$ServerName = 'localhost',
|
||||
[int]$Port = 8530,
|
||||
[switch]$UseSsl
|
||||
)
|
||||
|
||||
# Load the WSUS admin assembly explicitly if the module isn't present
|
||||
$wsusDll = "$env:ProgramFiles\Update Services\Tools\Microsoft.UpdateServices.Administration.dll"
|
||||
if (-not (Get-Module -ListAvailable UpdateServices)) {
|
||||
if (Test-Path $wsusDll) { Add-Type -Path $wsusDll } else { throw "WSUS Admin DLL not found: $wsusDll" }
|
||||
}
|
||||
|
||||
try {
|
||||
$wsusServer = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($ServerName, [bool]$UseSsl, $Port)
|
||||
$cleanupInterface = $wsusServer.GetCleanupManager()
|
||||
$cleanupScope = New-Object Microsoft.UpdateServices.Administration.CleanupScope
|
||||
$cleanupScope.DeclineSupersededUpdates = $true
|
||||
$cleanupScope.DeclineExpiredUpdates = $true
|
||||
$cleanupScope.CleanupObsoleteComputers = $true
|
||||
$cleanupScope.CleanupObsoleteUpdates = $true
|
||||
$cleanupScope.CompressUpdates = $true
|
||||
$cleanupScope.CleanupUnneededContentFiles = $true
|
||||
|
||||
$cleanupInterface.PerformCleanup($cleanupScope)
|
||||
Write-Host "WSUS cleanup completed."
|
||||
}
|
||||
catch {
|
||||
Write-Error "WSUS cleanup failed: $($_.Exception.Message)"
|
||||
exit 1
|
||||
}
|
||||
Reference in New Issue
Block a user