Windows Server WSUS PowerShell 拒绝审批取代补丁脚本

2019-08-0112:19:55 评论 176

Windows Server WSUS部署完成后需要和微软的补丁服务器进行同步,如果选择的同步分类较多加上补丁日新月异的会有很多已经被取代的补丁被下载,大大的浪费了带宽和磁盘空间。想要清理补丁也是头痛的事情,不可能一个一个的看补丁是否需要。其实也不是每个补丁都是必要的,只要系统稳定即可。每个月或者每个季度给客户端打一次安全更新、关键更新的补丁就行了。下面是一个使用 PowerShell 拒绝审批取代补丁的脚本
脚本我在测试和生产环境中使用正常,使用脚本需要谨慎,有条件还是建议备份系统后在测试使用。一共有两个脚本,第一个为删除清理已经下载的补丁目录,第二个拒绝审批取代补丁。使用前先确认几个设置,然后运行第一个脚本在执行和微软服务器同步后运行第二个脚本(两个脚本都必须在Windows Server WSUS服务器上以管理员方式运行)后在手工批准补丁下载。具体跟着下面的步骤走。

0x01 确认勾选的产品和分类

根据自己的需求来勾选需要同步的产品和补丁的分类,勾选的越多同步的补丁就会越多。
Windows Server WSUS PowerShell 拒绝审批取代补丁脚本

0x02 关闭自动审批的默认规则

不建议自动审批,开启后默认会把所有的符合的补丁都审批了,这是需要很大的磁盘空间的。如果生产环境中有win7、win8、win10、office、SQL及其他的微软产品想象下补丁有多少?
Windows Server WSUS PowerShell 拒绝审批取代补丁脚本

0x03 更新文件和语言

关闭下载快速安装文件,我只需要已经审批的补丁才下载,拒绝的补丁不下载。
Windows Server WSUS PowerShell 拒绝审批取代补丁脚本

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

Windows Server WSUS PowerShell 拒绝审批取代补丁脚本

0x05 和微软的补丁服务器进行同步

这个同步的时间和你勾选的产品、分类和网络有关等待同步完毕,先看看一共有多少补丁符合。我测试环境是两台win10 ltsc 2019 同步完有224个补丁
Windows Server WSUS PowerShell 拒绝审批取代补丁脚本

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

Windows Server WSUS PowerShell 拒绝审批取代补丁脚本
Windows Server WSUS PowerShell 拒绝审批取代补丁脚本

0x07 审批补丁

筛选出“未经审批”的补丁这就是我们想要的,全部选择审批。安装到已经连接到Windows Server WSUS的计算机上。审批完成后等待Windows Server WSUS自动下载完成后根据计算机更新策略下发到计算机。
Windows Server WSUS PowerShell 拒绝审批取代补丁脚本
Windows Server WSUS PowerShell 拒绝审批取代补丁脚本
Windows Server WSUS PowerShell 拒绝审批取代补丁脚本

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: