无需 WSUS/补丁管理即可将补丁级别从一台服务器复制到另一台服务器

无需 WSUS/补丁管理即可将补丁级别从一台服务器复制到另一台服务器

场景如下:Server1 和 Server2 均运行同一补丁级别的 Windows Server 2012 R2,目前处于负载平衡集群中。Server1 存在应用程序问题,建议将其替换。它已从集群中移除,Server3 正在被配置作为其替代品。

当初构建 Server1 和 Server2 时,并未使用任何补丁管理解决方案。它们是同时构建的,并且只是修补到当时最新的级别。

目标是将 Server3 的补丁级别调整到与 Server2 相同的级别

如上所述,没有可用的补丁管理解决方案。

当然,逐一检查 Server2 上的更新并将其应用到 Server3 也是一种选择,但我们应该能够做得更好。毕竟现在是 2017 年了。

可以通过 PowerShell 和 KB 编号检索 Server2 上的所有更新列表,并且此列表可用。

但是如何下载并应用这些更新呢?并且只有这些更新,到 Server3?

初步研究发现了许多 Windows 更新脚本,包括 VBS 和 PowerShell,但它们都无法满足并非所有当前更新都必须应用这一关键要求。

将 Server2 的补丁级别升级到最新,然后对 Server3 也进行相同操作,这也是一种选择,但我更愿意避免这种选择,因为必须安排停机/维护窗口(集群中没有可用的 Server1),然后进行大量应用程序测试。让我们将其作为最后的手段。

所以呢考虑到上述限制,我以合理的方式实现自动化的合理选择是什么?

答案1

我相当确定就是你要找的。

首先在服务器 2 上运行以获取 KB 编号列表,然后运行服务器 3 并传递这些 KB 编号。

答案2

清理器可能用于安装 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

答案3

但是如何下载并应用这些更新(并且仅这些更新)到 Server3?

你检查一下Microsoft 更新目录(请注意,该网站仅在 IE 中有效)?您可以通过 KB ID 查找任何更新,将其添加到购物篮,然后全部下载。我认为您甚至可以通过 KB ID 自动将更新添加到购物篮。

有了所需更新的列表,任务就变得非常简单了。注意:systeminfoutil 不反映已被新更新取代的更新 - 这是必需的。

更新。通过 KB 标识符自动下载更新的最佳工作方法描述在这里但他没有排除手动操作。微软在直接下载更新方面遇到了困难。

相关内容