Назад | Перейти на главную страницу

Утверждение обновлений WSUS на репликах WSUS с помощью Powershell

у нас есть 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, но команда одобрения не разрешена на серверах реплик.

Добавить $ computerScope.IncludeDownstreamComputerTargets = $ true

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

Предполагая:

  • сервер реплики включил сворачивание,
  • Прошло достаточно времени для обоих клиентов, чтобы сообщить своему серверу, и сворачивание с нижележащего сервера (DSS) на вышестоящий сервер (USS). К этому моменту вы должны увидеть обновления по мере необходимости в пользовательском интерфейсе.