Windows Server 2016 未通过 WSUS 更新

Red*_*000 11 windows wsus windows-server-2016

我们有一个 WSUS 服务器在 Windows Server 2016 上运行。WSUS 检测并向所有系统发送更新,包括 2012 服务器。WSUS 将检测但不会向任何 2016 服务器发送更新。

它显示需要 0 个更新,所有更新都显示“已安装或不适用”。这些是全新的服务器安装,它们是直接从去年 11 月创建的磁盘映像安装的。

如果我在其中一台服务器上运行报告并将产品过滤器设置为“Windows Server 2016”,我将安装 31 个更新或不适用。

所有 31 个更新都设置为批准“安装”。它们的状态都是“不适用”它们都是关键更新和安全更新。

我已经在其中一台有问题的服务器上手动检查了已安装的更新,并确认未安装这些“不适用”更新。

所有这些服务器都是全新安装的,它们位于一个 OU 中,可防止它们在更新安装后自行重新启动,而我是唯一手动重新启动它们的人。由于它们已安装,因此它们已获得 0 个更新。我很难相信全新的 Windows Server 2016 安装有 0 个适用的更新。

我已确保 BITS 和 Windows 更新服务正在运行。我已经运行了 wuauclt /reportnow 和 wuauclt /detectnow。它似乎没有任何作用。我已经运行清理向导来拒绝并删除所有被取代的更新。我已验证这些计算机在 AD 和 WSUS 中处于正确的组中。我已在受影响机器上的注册表中验证它们指向 WSUS 服务器并且可以 ping 通。可以从 WSUS 服务器 ping 客户端。没有防火墙或端口拦截器或类似的东西。我创建了一个全新的 2016 服务器安装,上面绝对没有安装任何东西;没有角色,没有防火墙,没有病毒扫描程序,什么都没有,只是一个空白服务器并试图强制它连接。WSUS 检测到服务器存在,但仅此而已。

所有其他操作系统都可以正常工作,只有 2016 服务器有这个问题。这绝对是 WSUS 服务器的问题;如果我进入注册表并将其更改回 Microsoft 的服务器,它会找到更新。

有没有人知道可能导致问题的原因以及如何解决?

谢谢。

编辑 - 更新:仍然有问题。尝试安装第二个 2016 WSUS 服务器,同样的问题,仅适用于 2016 服务器。

我什至尝试安装 2019 服务器(虽然我认为没有任何区别......)。没有不同。

我什至排除了组策略。我将一个 2016 年的测试服务器单独放在一个具有阻塞继承的 OU 中。我链接的唯一 GPO 是指向 2019 服务器的 WSUS 服务器设置。机器没有得到任何其他政策。2016 年测试服务器上甚至没有配置病毒扫描程序或防火墙,它们甚至在同一网段上。

从 2012 年到 2016 年,我们正在转换越来越多的服务器,这意味着这是一个越来越大的问题,因为它们都不会从 WSUS 获得更新......尽管我不想,但我将拥有打电话给微软...

Red*_*000 8

好的,在与 Microsoft 的技术支持部门合作 3 周后,我们已经解决了问题。

问题在于双重扫描尝试连接到 Windows 更新(在线)并失败。当它失败时,系统会停止尝试并拒绝连接到 WSUS。

附加的问题是服务器安装介质中有一个错误,它阻止了双重扫描的更改。它只是忽略该策略并保留默认更新源 Windows 更新。

以下是您必须执行的操作来修复它:在有问题的服务器上的 Powershell 中运行以下命令

$MUSM = New-Object -ComObject "Microsoft.Update.ServiceManager"
$MUSM.Services | select Name, IsDefaultAUService
Run Code Online (Sandbox Code Playgroud)

你会得到这样的东西:

Windows Update Standalone Installer - False   
Windows Server Update Service - False   
Windows Update - True
Run Code Online (Sandbox Code Playgroud)

如果它显示“Windows Update - True”,那么这就是您的默认来源,无论您的 GPO 怎么说...

您必须做的第一件事是确保在您的服务器上安装了以下补丁。

kb4103720 和 kb4462928

你需要他们两个。它们都是巨大的,它们都需要永远和一天的时间来安装,并且都需要重新启动服务器。

这些 KB 修复了双重扫描问题,因此服务器将响应 GPO,告诉它使用哪个默认源。

现在您需要配置组策略以告诉服务器仅使用 WSUS 服务器。根据 Microsoft 这些是必需的设置(我对其中的一些设置表示怀疑,但我还没有对每个设置进行测试......我很高兴这件事终于可以正常工作了)

计算机配置 > 策略 > 管理模板 > 系统 > 设备安装

指定设备驱动程序源位置的搜索服务器

Set to "Enabled"  
Select search order: "Do not search Windows Update"
Run Code Online (Sandbox Code Playgroud)

指定设备驱动程序更新的搜索服务器

Set to "Enabled"  
Select Update Server: "Search Managed Server"
Run Code Online (Sandbox Code Playgroud)

计算机配置 > 策略 > 管理模板 > 系统 > Internet 通信管理 > Internet 通信设置

关闭对所有 Windows 更新功能的访问(在 Microsoft 中,这意味着他们的在线服务器,而不是“使其无法获得更新”)

Set to "Enabled"
Run Code Online (Sandbox Code Playgroud)

关闭对商店的访问

Set to "Enabled"
Run Code Online (Sandbox Code Playgroud)

计算机配置 > 策略 > 管理模板 > Windows 组件 > Windows 更新

不允许更新延迟策略导致针对 Windows 更新的扫描

Set to "Enabled"
Run Code Online (Sandbox Code Playgroud)

对于预定的自动更新安装,登录用户不会自动重启

Set to "Enabled"
Run Code Online (Sandbox Code Playgroud)

指定内网 Microsoft 更新服务位置

Set to "Enabled"  
Set the intranet update service for detecting updates: "http://[YOUR SERVER]:8530"  
Set the intranet statistics server:"http://[YOUR SERVER]:8530"  
Set the alternate download server: "http://[YOUR SERVER]:8530"  
Uncheck the box Download files with no Url in the metadata if alternate download server is set
Run Code Online (Sandbox Code Playgroud)

将您的服务器移动到启用此 GPO 的 OU。我在我的 Servers OU 中为 2016 服务器创建了一个单独的 OU,并将这个 GPO 链接到它。

再次运行上述 powershell 命令。

现在应该说

 Name                                   IsDefaultAUService    
-------                                 --------------------------  
Windows Server Update Service              True  
Windows Update                             False
Run Code Online (Sandbox Code Playgroud)

如果您得到“Windows Server Update Service”为真,那么它应该可以工作!

我希望这对其他人有帮助。这无疑是一个令人沮丧的问题......

我接受无标记钞票、金条和苏格兰威士忌的捐赠。