WSUS PowerShell脚本:取消已拒绝更新审批失败求助
WSUS取消已拒绝更新审批的PowerShell实现方案
问题背景
你需要自动处理WSUS中被取代更新的审批逻辑:循环为每个被取代更新查找有效取代项,找到后拒绝该被取代更新;当未拒绝更新中找不到取代项时,需取消已拒绝更新的审批。此前尝试的PowerShell命令因参数或重载问题报错,通过Procmon监控发现GUI的操作逻辑是:先将已拒绝更新部署到「未分配计算机」组,随即删除该部署,以此实现取消审批的效果。
解决方案代码
以下是对应GUI操作逻辑的PowerShell实现,包含完整的WSUS连接、目标组获取及审批取消步骤:
# 1. 连接WSUS服务器(根据实际环境调整服务器名和端口) $wsusServer = Get-WsusServer -Name "WSUS-SERVER" -PortNumber 8530 # 2. 获取「未分配计算机」目标组 $unassignedGroup = $wsusServer.GetComputerTargetGroups() | Where-Object { $_.Name -eq "未分配计算机" } # 3. 定位需要取消审批的已拒绝更新(替换为你脚本中的实际查找逻辑) $targetUpdate = $wsusServer.GetUpdates() | Where-Object { $_.IsDeclined -eq $true -and $_.Title -match "目标更新标题关键字" } # 4. 执行GUI对应的两步操作:先部署到未分配组,再删除部署 if ($targetUpdate -and $unassignedGroup) { # 第一步:将更新审批到未分配计算机组,审批状态设为未批准 Approve-WsusUpdate -Update $targetUpdate -Action Unapproved -TargetGroup $unassignedGroup # 第二步:移除该更新在未分配计算机组的审批 Remove-WsusUpdateApproval -Update $targetUpdate -TargetGroup $unassignedGroup Write-Host "已成功取消更新 '$($targetUpdate.Title)' 的审批" } else { Write-Host "未找到目标更新或未分配计算机组" }
代码说明
- 连接WSUS服务器时,需根据实际环境修改服务器名和端口(默认WSUS端口为8530/8531)。
Approve-WsusUpdate指定-Action Unapproved并关联「未分配计算机」组,对应GUI中第一步的部署操作;随后用Remove-WsusUpdateApproval移除该组的审批,对应GUI中删除部署的动作,以此绕过直接修改已拒绝更新审批状态的限制。- 将
$targetUpdate的获取逻辑替换为你脚本中定位已拒绝取代更新的代码,即可无缝集成到原有逻辑中。
内容的提问来源于stack exchange,提问作者Livarkhal
相关产品推荐
相关产品推荐

