我们在 Windows Server 2016 上运行了 WSUS 服务器。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 获得更新...虽然我不想,但我还是得打电话给微软...
答案1
好的,经过与微软技术支持部门三周的沟通,我们解决了这个问题。
问题在于双重扫描尝试连接 Windows 更新(在线)但失败了。当它失败时,系统就停止尝试并拒绝连接 WSUS。
另一个问题是服务器安装媒体中有一个错误,导致双重扫描无法更改。它只是忽略策略并保留默认更新源 Windows Update。
以下是修复方法:在有问题的服务器上使用 Powershell 运行以下命令
$MUSM = New-Object -ComObject "Microsoft.Update.ServiceManager"
$MUSM.Services | select Name, IsDefaultAUService
你将得到如下结果:
Windows Update Standalone Installer - False
Windows Server Update Service - False
Windows Update - True
如果它说“Windows Update - True”,那么这就是您的默认来源,无论您的 GPO 说什么......
您要做的第一件事是确保您的服务器上安装了以下补丁。
kb4103720 和 kb4462928
你需要它们两者。它们都很庞大,都需要花一整天的时间安装,并且都需要重启服务器。
这些 KB 修复了双重扫描问题,因此服务器将响应 GPO,告诉它使用哪个默认源。
现在您需要配置组策略以告知服务器仅使用 WSUS 服务器。根据 Microsoft 的说法,这些是必需的设置(我对其中一些设置持怀疑态度,但我还没有测试过每一个设置……我只是很高兴这个东西终于可以正常工作了)
计算机配置 > 策略 > 管理模板 > 系统 > 设备安装
指定设备驱动程序源位置的搜索服务器
Set to "Enabled"
Select search order: "Do not search Windows Update"
指定设备驱动程序更新的搜索服务器
Set to "Enabled"
Select Update Server: "Search Managed Server"
计算机配置 > 策略 > 管理模板 > 系统 > Internet 通信管理 > Internet 通信设置
关闭对所有 Windows 更新功能的访问(在微软的说法中,这指的是他们的在线服务器,而不是‘使其无法获取更新’)
Set to "Enabled"
关闭对商店的访问
Set to "Enabled"
计算机配置 > 策略 > 管理模板 > Windows 组件 > Windows 更新
不允许更新延迟策略导致针对 Windows 更新的扫描
Set to "Enabled"
计划的自动更新安装不会在登录用户的情况下自动重启
Set to "Enabled"
指定 Intranet 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
将您的服务器移至启用此 GPO 的 OU。我在服务器 OU 中为 2016 服务器创建了一个单独的 OU,并将此 GPO 链接到它。
再次运行上述 powershell 命令。
现在应该说
Name IsDefaultAUService
------- --------------------------
Windows Server Update Service True
Windows Update False
如果您获得“Windows Server Update Service”True,那么它就可以工作了!
我希望这能帮助别人。这确实是一个令人沮丧的问题...
我接受无标记的钞票、金条和苏格兰威士忌的捐赠。
答案2
如果你浏览一下网络,你会看到 @Redwizard000 尝试过的所有建议,所以很明显 @Redwizard000 真的很努力地解决这个问题(见https://serverfault.com/a/940236/203726了解@Redwizard000 最终如何解决这个问题)。请继续阅读我的经验:
在我的情况下,WSUS 服务器在 Windows Server 2012 R2 上运行,安装了所有补丁,运行了您看到的 VB 清理脚本,完成了清理过程(耗时数小时),可以为 Windows 10 计算机提供更新,但全新的 Windows Server 2016 客户端计算机无法从 WSUS 获取更新,并显示 0x8024401c 错误消息。唯一有帮助的是在 WSUS 服务器上:增加/删除 WSUS 应用程序池的一些 IIS 应用程序池资源限制(例如队列长度、限制间隔、私有内存限制,但还有其他限制),如中所述https://serverfault.com/a/835941和https://blogs.msdn.microsoft.com/the_secure_infrastructure_guy/2015/09/02/windows-server-2012-r2-wsus-issue-clients-cause-the-wsus-app-pool-to-become-unresponsive-with-http-503/然后重新启动 IIS。检查更新似乎需要 IIS 服务器大约 2GB 的内存,耗时约 8 分钟。此后错误消息消失,但是...
..客户端 Windows Server 2016 计算机会无限期地卡在下载 0% 的更新。为了解决这个问题,我不得不手动从以下位置下载最近的累积更新(在客户端 Windows Server 2016 计算机上)http://www.catalog.update.microsoft.com/home.aspx(或暂时使用微软的 Windows 更新服务器获取累积更新)并安装前更改设置以使用 WSUS。
更新:有一篇 MS 支持文章名为“Windows 10 或 Windows Server 2016 上的 Windows 更新卡在 0%“讨论了如何更新 Windows 10/2016/2019 客户端计算机上的 Windows 更新代理,使其超越 RTM 版本(10.0.14393.0)前您可以使用 WSUS。这听起来就像上一段中实际执行的操作。
答案3
我遇到了这样的问题,2016 会抛出错误:0x8024401c
,而在 WSUS 中会显示0% updated (not reported yet)
。
为了解决这个问题,我更改了 IIS(高级设置)和所有 2016 服务器中 WSUS 应用程序池的值。
Queue Length: 25000 from 1000
Limit Interval (minutes): 15 from 5
"Service Unavailable" Response: TcpLevel from HttpLevel
然后转到https://community.spiceworks.com/scripts/show/2998-adamj-clean-wsus 并根据指示复制粘贴代码。
- 命名
Clean-WSUS.ps1
- 安装所需软件
- 跑步
.\Clean-WSUS.ps1 -FirstRun
- 最后,
.\Clean-WSUS.ps1 -DirtyDatabaseCheck
这家伙绝对值得捐款!
答案4
我遇到了同样的问题,下面是我解决问题的方法。
- 在策略中(无论是组策略还是本地策略),启用策略“不连接到任何 Windows 更新位置”。这将阻止服务器联系 Microsoft/Windows 更新。
- 在策略中,在“指定 Microsoft 更新位置”中添加了备用更新服务器 - 这是与报告和更新服务器相同的服务器。
- 在 Windows Update-高级选项中,取消选中“推迟功能更新”复选框
完成此操作后,我能够通过 WSUS 完全修补服务器 - 这已在两个不同环境中的两台服务器上得到确认。似乎最重要的更改是取消选中延迟更新选项,但根据我在网上读到的内容,其他更改也可能导致更新问题。