一、可以定期在WSUS控制台中运行Server Cleanup Wizard,进行手动清理;


 wKiom1gISnyhcK8HAABfv0GTjMU131.png-wh_50

wKiom1gISo-BEAQVAABKl9_i8bc534.png-wh_50


但是利用这种方法会有两个问题:

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服务

wKiom1gISqvjzF86AABbR8h8gDc305.png-wh_50


在服务器角色中把WIDDatabase和WSUSServices前的勾选全部去掉。

2、卸载Windows Internal Database(需要确认没有其它应用在使用该服务,否则需要通过SQL命令进行WSUS数据库删除)

wKioL1gISryhRhOmAABcI2AauPs425.png-wh_50


在功能中把WindowsInternalDatabase前的勾选去掉。

3、删除WIDDatabase数据库库文件(若没有做步骤2,该步骤跳过)


 wKiom1gISs7xwhOBAABCp7zp-eU999.png-wh_50

删除%windir%\WID目录及其中所有内容。

4、重新安装WSUS服务,进行相关配置。