у нас есть 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
Предполагая: