WSUS利用Powershell自动清理过期补丁

  • 内容
  • 评论
  • 相关

我们正常WSUS自带了删除过期补丁,不使用补丁的功能,但是每次需要人工执行很不方便,不过我们可以使用PowerShell来自执行。

下面是这些命令的说明

Invoke-WsusServerCleanup [-UpdateServer<IUpdateServer>] [-CleanupObsoleteComputers] [-CleanupObsoleteUpdates][-CleanupUnneededContentFiles] [-CompressUpdates] [-DeclineExpiredUpdates][-DeclineSupersededUpdates] [-WhatIf] [-Confirm]  [<CommonParameters>]

 
 

-CleanupObsoleteComputersComputers not contactiong the server

(从数据库中删除超过30天未连接该指定服务器的计算机)

-CleanupObsoleteUpdatesUnused updates and update revisions

(从数据库中删除超过30天的过期的和未被批准的更新,并且删除超过30天的未被批准的旧版本补丁)

-CleanupUnneededContentFilesUnneeded update files

(从磁盘中删除不被更新服务器或下游更新服务器需要的更新文件)

-DeclineExpiredUpdatesExpired updates

(拒绝不被批准和被微软标注未过期的更新)

-DeclineSupersededUpdatesSuperseded updates

(拒绝超过30天的未被批准的,不是客户端当前需要的,且被已通过审批的更新替代掉的更新)

-CompressUpdates:压缩更新,从数据库中删除旧版的相同更新

-UpdateServer:指定需要进行清理操作的WSUS服务器,默认目标WSUS的服务器名,可以使用Get-WsusServer查看。

正式脚本

创建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 “C:\Scripts\wsusclean.ps1”

 2、计划任务的定义时间和WSUS的同步计划时间不要冲突和重合