у нас есть 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
Assuming: Сервер реплики