场景是:服务器1和服务器2都在相同的修补程序级别运行Windows Server 2012 R2,目前处于负载平衡群集中。 Server1有应用程序的问题,build议是取代它。 已经从集群中取出,而Server3正在被replace。
当Server1和Server2最初build立时,没有使用补丁pipe理解决scheme。 它们同时build成,只是修补到当时的最新水平。
目标是将Server3修补到与Server2相同的级别 。
如上所述,没有补丁pipe理解决scheme可用。
将Server2上的更新一个接一个地应用到Server3当然是一种select,但是我们应该能够做得比这更好。 毕竟是2017年。
可以通过PowerShell和KB编号检索Server2上所有更新的列表,并且此列表可用。
但是,如何再下载和应用这些更新, 并且只有这些更新 ,才能到Server3?
最初的研究已经发现了许多Windows更新脚本,包括VBS和PowerShell,但是它们都失败了,并不是所有的更新都必须被应用。
将Server2的补丁级别设置为最新,对于Server3也是一样的,但也是一个选项,但由于不得不安排停机时间/维护时间(在群集中没有可行的Server1),所以我宁愿避免这个选项,应用testing。 让我们作为最后的手段。
那么 – 考虑到上述限制,我有什么合理的select来以合理的方式实现自动化?
我很确定这是你正在寻找的。
首先在服务器2上运行以获取KB编号列表,然后运行服务器3并将这些KB编号传入。
清洁大概可以安装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
但是,如何再下载和应用这些更新,并且只有这些更新,才能到Server3?
你检查微软更新目录 (请注意,该网站只适用于IE)? 你可以通过知识产权身份识别任何更新,将其添加到购物篮,然后将其全部下载。 我想你甚至可以通过知识库ID自动添加更新篮。
有一个所需的更新列表,任务变得非常简单。 注意: systeminfo util不反映已经被新的更新 – 需要的东西。
UPD。 通过此处所述的KB标识符自动下载更新的最佳工作方法。 但他不排除体力劳动。 微软正在努力更新直接下载。