Windows Server WSUS部署完成后需要和微软的补丁服务器进行同步,如果选择的同步分类较多加上补丁日新月异的会有很多已经被取代的补丁被下载,大大的浪费了带宽和磁盘空间。想要清理补丁也是头痛的事情,不可能一个一个的看补丁是否需要。其实也不是每个补丁都是必要的,只要系统稳定即可。每个月或者每个季度给客户端打一次安全更新、关键更新的补丁就行了。下面是一个使用 PowerShell 拒绝审批取代补丁的脚本。
此脚本我在测试和生产环境中使用正常,使用脚本需要谨慎,有条件还是建议备份系统后在测试使用。一共有两个脚本,第一个为删除清理已经下载的补丁目录,第二个拒绝审批取代补丁。使用前先确认几个设置,然后运行第一个脚本在执行和微软服务器同步后运行第二个脚本(两个脚本都必须在Windows Server WSUS服务器上以管理员方式运行)后在手工批准补丁下载。具体跟着下面的步骤走。
0x01 确认勾选
根据自己的需求来勾选需要同步的产品和补丁的分类,勾选的越多同步的补丁就会越多。
0x02 默认规则
不建议自动审批,开启后默认会把所有的符合的补丁都审批了,这是需要很大的磁盘空间的。如果生产环境中有win7、win8、win10、office、SQL及其他的微软产品想象下补丁有多少?
0x03 更新文件
关闭下载快速安装文件,我只需要已经审批的补丁才下载,拒绝的补丁不下载。
0x04 删除清理
以上三个设置确认完毕后,我们开始运行第一个脚本清理已经下载的补丁目录(如果你是新的Windows Server WSUS那么可以跳过这步)直接将以下代码粘贴到记事本另存为 .ps1或在PowerShell ISE执行
net stop wsusservice cd "C:\Program Files\Update Services\Tools" .\wsusutil.exe reset echo Delete WSUS Folder Content pause net start wsusservice
0x05 补丁同步
这个同步的时间和你勾选的产品、分类和网络有关等待同步完毕,先看看一共有多少补丁符合。我测试环境是两台win10 ltsc 2019 同步完有224个补丁
0x06 拒绝审批
和微软的补丁服务器同步完成后执行拒绝审批取代更新的脚本,脚本执行完毕后可以看到已经拒绝了202个补丁,一下就少202个补丁,什么感觉?直接将以下代码粘贴到记事本另存为 .ps1或在PowerShell ISE执行
#Change server name and port number and $True if it is on SSL $Computer = $env:COMPUTERNAME $Domain = $env:USERDNSDOMAIN $FQDN = "$Computer" + "." + "$Domain" [String]$updateServer1 = $FQDN [Boolean]$useSecureConnection = $False [Int32]$portNumber = 8530 # Load .NET assembly [void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") $count = 0 # Connect to WSUS Server $updateServer = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($updateServer1,$useSecureConnection,$portNumber) write-host "<<<Connected sucessfully >>>" -foregroundcolor "yellow" $updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope $u=$updateServer.GetUpdates($updatescope ) foreach ($u1 in $u ) { if ($u1.IsSuperseded -eq 'True') { write-host Decline Update : $u1.Title $u1.Decline() $count=$count + 1 } } write-host Total Declined Updates: $count trap { write-host "Error Occurred" write-host "Exception Message: " write-host $_.Exception.Message write-host $_.Exception.StackTrace exit } # EOF
0x07 审批补丁
筛选出“未经审批”的补丁这就是我们想要的,全部选择审批。安装到已经连接到Windows Server WSUS的计算机上。审批完成后等待Windows Server WSUS自动下载完成后根据计算机更新策略下发到计算机。