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

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自动下载完成后根据计算机更新策略下发到计算机。

人已赞赏
操作系统

认识 Windows Server WSUS 中的取代图标

2019-7-29 10:01:39

操作系统

Win10 由于无法验证发布者,所以Windows已经阻止此软件

2019-8-2 8:46:33

4 条回复 A文章作者 M管理员
  1. 运行第二个脚本报错; Exception Message:
    请求因 HTTP 状态 400 失败: Bad Request。
    在 Microsoft.UpdateServices.Administration.AdminProxy.CreateUpdateServer(Object[] args)
    在 CallSite.Target(Closure , CallSite , Type , Object , Object , Object )

    • 是否有禁止更新或者更新服务器被屏蔽?检查你的网络配置

  2. 拒绝取代更新的代码 在我的服务器上使用报错

    • 具体报什么错,我只是在server2016的环境中是用,其他服务器版本未测试。

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索