一、可以定期在WSUS控制台中运行Server Cleanup Wizard,进行手动清理;
但是利用这种方法会有两个问题:
1、需要人工手动运行;
2、如果长期没有运行,由于数据量过大可能导致持续时间过长,或者一直无法成功清理的情况;
建议若使用以上这个方法,最少每月要进行一次。
二、利用PS进行计划自动清理;
该方法适用于WindowsServer2012之后的系统,通过PowerShell的Invoke-WsusServerCleanup命令进行清理。
Invoke-WsusServerCleanup [-UpdateServer<IUpdateServer>] [-CleanupObsoleteComputers] [-CleanupObsoleteUpdates][-CleanupUnneededContentFiles] [-CompressUpdates] [-DeclineExpiredUpdates][-DeclineSupersededUpdates] [-WhatIf] [-Confirm] [<CommonParameters>]
-CleanupObsoleteComputers:Computers not contactiong the server
(从数据库中删除超过30天未连接该指定服务器的计算机)
-CleanupObsoleteUpdates:Unused updates and update revisions
(从数据库中删除超过30天的过期的和未被批准的更新,并且删除超过30天的未被批准的旧版本补丁)
-CleanupUnneededContentFiles:Unneeded update files
(从磁盘中删除不被更新服务器或下游更新服务器需要的更新文件)
-DeclineExpiredUpdates:Expired updates
(拒绝不被批准和被微软标注未过期的更新)
-DeclineSupersededUpdates:Superseded updates
(拒绝超过30天的未被批准的,不是客户端当前需要的,且被已通过审批的更新替代掉的更新)
-CompressUpdates:压缩更新,从数据库中删除旧版的相同更新
-UpdateServer:指定需要进行清理操作的WSUS服务器,默认目标WSUS的服务器名,可以使用Get-WsusServer查看。
PS C:\Windows\system32> Get-WsusServer
Name : BJXXXWSUS01
以上PS,必须要使用管理员模式运行,如果不指定UpdateServer参数,则默认为当前运行Invoke-WsusServerCleanup的本地服务器。
创建wsusclean.ps1脚本如下:
Invoke-WsusServerCleanup-CleanupObsoleteComputers -CleanupObsoleteUpdates -CleanupUnneededContentFiles-CompressUpdates-DeclineExpiredUpdates -DeclineSupersededUpdates
将上述脚本放在WSUS服务器的C盘Scripts目录中(或其它路径,对应需要修改下面文件路径),创建计划任务,执行:
powershell-file "C:\Scripts\wsusclean.ps1"
需要注意:
1、WSUS服务器需要开启允许执行未签名脚本的策略。
Set-ExecutionPolicy Unrestricted
或者改为:
powershell -executionpolicy Unrestricted-file ":\Scripts\wsusclean.ps1"
2、计划任务的定义时间和WSUS的同步计划时间不要冲突和重合
三、彻底重建WSUS服务
如果真的出现了长期没有运行清理,由于数据量过大可能导致持续时间过长,或者一直无法成功清理的情况。
就需要彻底卸载WSUS服务,并重新安装WSUS服务,以WindowsServer2012系统后使用本地WID数据库的WSUS为例。
1、卸载WindowsServerUpdateServices服务
在服务器角色中把WIDDatabase和WSUSServices前的勾选全部去掉。
2、卸载Windows Internal Database(需要确认没有其它应用在使用该服务,否则需要通过SQL命令进行WSUS数据库删除)
在功能中把WindowsInternalDatabase前的勾选去掉。
3、删除WIDDatabase数据库库文件(若没有做步骤2,该步骤跳过)
删除%windir%\WID目录及其中所有内容。
4、重新安装WSUS服务,进行相关配置。