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

Сценарий таков: Сервер1 и Сервер2, работающие под управлением Windows Server2012 R2 на одном уровне исправлений, в настоящее время находятся в кластере с балансировкой нагрузки. Сервер1 имеет проблемы с приложением, и совет должен заменить это. Это было удалено из кластера, и Server3 предоставляется как его замена.

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

Цель состоит в том, чтобы установить исправление Server3 на тот же уровень, что и Server2.

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

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

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

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

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

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

Итак, каковы мои разумные варианты для автоматизации этого разумным способом, учитывая вышеуказанные ограничения?

3 ответа

Очиститель возможно для установки WSUS. Затем вы можете использовать модуль PowerShell WSUS для этого. Этот скрипт просматривает локально установленные обновления, подключается к 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

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

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

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

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

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

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

Другие вопросы по тегам