使用 Powershell 批准 WSUS 副本上的 WSUS 更新

使用 Powershell 批准 WSUS 副本上的 WSUS 更新

我们有 3 台 WSUS 副本服务器和一台副本连接到的中央服务器。我们从中央服务器管理 3 个副本。所有客户端仅连接到副本。

我正在尝试创建一个 PowerShell 脚本,该脚本仅批准任何服务器所需的更新。

我的问题是:如果我查询有关中央服务器上“所需”数量的信息,我总是得到零个补丁。这是因为没有客户端连接到中央服务器。我如何获取所有四台(或实际上是三台)服务器的总和信息?

我目前拥有的是:

# Get WSUS Server
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null 
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();  

$updateScope = new-object Microsoft.UpdateServices.Administration.UpdateScope; 
$computerScope = new-object Microsoft.UpdateServices.Administration.ComputerTargetScope;

#Get all available Updates
$wsusupdates = $wsus.GetUpdates($updateScope)

$updateTotalCount = $wsus.GetUpdateCount($updateScope)
foreach($update in $wsusupdates)
{
    # Get the summary
    $summary = $update.GetSummary($computerscope); 
    $neededCount = ($summary.InstalledPendingRebootCount + $summary.NotInstalledCount)

    # Only install, if any server needs the update
    if ($neededCount -gt 0)
    {
        $update.Approve("Install", ($wsus.GetComputerTargetGroups() | Where-Object{$_.Name -eq $aSelectedWsusGroup}))
    }
}

关键部分是线

$summary = $update.GetSummary($computerscope); 

我从中获得更新信息 - 包括后面一行中“需要”计算所需的计数。

最后的问题是:如何将副本服务器数据包含在更新摘要中以确定是否需要更新?

顺便说一句:我尝试从中央 WSUS 服务器在副本上远程运行该脚本,但副本服务器上不允许使用批准命令。

答案1

添加$computerScope包括下游计算机目标= $真

$computerScope = new-object Microsoft.UpdateServices.Administration.ComputerTargetScope;
$computerScope.IncludeDownstreamComputerTargets = $true 

假设:

  • 副本服务器已启用汇总
  • 两个客户端都有足够的时间向其服务器报告,并从下游服务器 (DSS) 汇总到上游服务器 (USS)。此时,您应该会在 UI 中看到所需的更新。

相关内容