Репликация уровня исправлений с одного сервера на другой без WSUS / управления исправлениями

Сценарий следующий: Server1 и Server2, оба работают под управлением Windows Server 2012 R2 с одинаковым уровнем исправлений, в настоящее время находятся в кластере балансировки нагрузки. Server1 имеет проблемы с приложением, и советуем заменить его. Он был удален из кластера, и Server3 предоставляется в качестве его замены.

Когда изначально были созданы Server1 и Server2, решение для управления исправлениями не использовалось. Они были созданы одновременно и просто пропатчены до последнего на тот момент уровня.

Задача состоит в том, чтобы исправить Server3 до того же уровня, что и Server2 .

Как уже упоминалось, решения для управления исправлениями не существует.

Просматривать обновления на Server2 одно за другим и применять их к Server3, конечно, вариант, но мы должны иметь возможность сделать что-то лучше, чем это. В конце концов, сейчас 2017 год.

Можно получить список всех обновлений на Server2 с помощью PowerShell и по номеру базы знаний, и этот список доступен.

Но как затем загрузить и применить эти обновления, и только эти обновления , для Server3?

Первоначальное исследование выявило ряд сценариев обновления Windows, как VBS, так и PowerShell, но все они терпят неудачу при критическом требовании, что не все текущие обновления должны применяться.

Приведение уровня исправлений Server2 к текущему уровню, то же самое для Server3, также является вариантом, но я ' Я предпочитаю избегать из-за необходимости планировать периоды простоя / обслуживания (в кластере нет жизнеспособного Server1), а затем тестировать множество приложений. Давайте сохраним это в крайнем случае.

Итак - какие мои разумные варианты автоматизации этого разумным способом с учетом вышеуказанных ограничений?

5
задан 27 January 2017 в 18:51
3 ответа

Я почти уверен , что это именно то, что вы ищете.

Сначала запустите на сервере 2, чтобы получить список номеров базы знаний, затем запустите сервер 3 и передайте эти номера базы знаний.

1
ответ дан 3 December 2019 в 01:56

Но как потом скачать и применить эти обновления и только эти обновления, до Server3?

Проверяете ли вы Каталог обновлений Microsoft (обратите внимание, что сайт работает только в IE)? Вы можете найти любое обновление по идентификатору KB, добавить его в корзину, а затем скачать все. Думаю, вы даже можете автоматизировать добавление обновлений в корзину по идентификатору KB.

Имея список необходимых обновлений, задача становится довольно простой. Примечание: Утилита systeminfo не отражает обновления, которые были заменены новыми - необходимыми.

UPD. Лучший способ работы для автоматической загрузки обновлений через идентификатор KB описан здесь . Но он не исключал ручного труда. Microsoft борется с прямой загрузкой обновлений.

0
ответ дан 3 December 2019 в 01:56

Очиститель, вероятно, для установки WSUS. Затем вы можете использовать для этого модуль WSUS PowerShell. Этот сценарий просматривает локально установленные обновления, подключается к WSUS, затем утверждает эти обновления для определенной группы в WSUS:

$servername = <ip of WSUS>
$port       = "8530"
$groupname  = <name of server group>

# Import Libraries
[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")

# Connect to WSUS
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($servername, $False, $port)

# Connect to local Update Service
$Session = New-Object -ComObject "Microsoft.Update.Session"
$Searcher = $Session.CreateUpdateSearcher()
$historyCount = $Searcher.GetTotalHistoryCount()
$installedUpdates = $Searcher.QueryHistory(0, $historyCount) | Select-Object Title

# Approve all locally installed updates in WSUS
foreach ($installedUpdate in $installedUpdates) {
  $update = $wsus.SearchUpdates($installedUpdate)
  $group = $wsus.GetComputerTargetGroups() | where {$_.Name -eq $groupname}
  $update[0].Approve(“Install”,$group)
}

Вы также можете записать все локальные обновления в файл:

$filename = <path>
$Session = New-Object -ComObject "Microsoft.Update.Session"
$Searcher = $Session.CreateUpdateSearcher()
$historyCount = $Searcher.GetTotalHistoryCount()
$installedUpdates = $Searcher.QueryHistory(0, $historyCount) | Select-Object Title
$installedUpdates | Export-Csv $filename

Затем скопируйте этот файл на другой сервер и запустите что-то вроде этого: https://msdn.microsoft.com/en-us/library/windows/desktop/aa387101 (v = vs.85) .aspx

1
ответ дан 3 December 2019 в 01:56

Теги

Похожие вопросы