排查 WSUS 客户端代理的问题
本文可帮助你诊断和解决Windows Server Update Services (WSUS) 客户端代理的问题。
原始产品版本:Windows Server Update Services
原始 KB 编号: 10132
当遇到 WSUS 客户端代理问题时,它们可以通过多种方式表现出来。 下面列出了一些常见问题:
- 这可能是组策略的客户端设置的问题。
- 这可能是 BITS 的问题。
- 这可能是 WSUS 代理服务的问题。
- 它可能与阻止客户端到达服务器的网络问题有关。
- 这可能是自动更新代理存储的问题。
- 这可能是客户端具有磁盘克隆导致的 WSUS 客户端 ID 重复的问题。
验证客户端配置是否正确
排查 WSUS 客户端代理问题时,首先请确保正确配置了客户端。 请确保客户端正在接收正确的 Active Directory 组策略,并且存在 WSUS 服务器的详细信息。 可以通过运行以下命令来执行此操作:
GPRESULT /V > GPRESULT.TXT
在记事本中打开文本文件,并查找 WSUS 策略的名称。 例如,如果 WSUS 策略名为 WSUS,则可以在“应用的组策略对象”标题下的“计算机设置”部分的 GPRESULT.TXT 文件中找到它。 下面是一个示例:
Applied Group Policy Objects
-----------------------------
Default Domain Policy
WSUS
Local Group Policy
如果不存在 WSUS 设置,可能的原因包括:
- 系统没有来自域的组策略。
- 组策略不面向客户端系统。
若要解决此问题,请确保在每个客户端上成功更新组策略,并且 WSUS 设置已正确配置。
若要更新客户端上的组策略,请从命令提示符运行GPUpdate /force
。
有关为 WSUS 客户端配置组策略的详细信息,请参阅使用 组策略 配置自动汇报。
检查与 BITS 相关的问题
后台智能传输服务 (BITS) 是 WSUS 用来将更新从 Microsoft Update 下载到 main WSUS 服务器,以及从 WSUS 服务器下载到其客户端的服务。 某些下载问题可能是由服务器或客户端计算机上的 BITS 问题引起的。 排查下载问题时,应确保所有受影响的计算机上都正确运行 BITS。
默认情况下,BITS 服务必须在 LocalSystem 帐户下运行。 若要将服务配置为在正确的帐户下运行,请执行以下步骤:
打开命令提示符并运行以下命令:
sc config bits obj= LocalSystem
obj= 和 LocalSystem 之间必须有一个空格。 如果成功,应会收到以下输出:
[SC] ChangeServiceConfig SUCCESS
停止并重启 BITS。
若要查看 BITS 服务状态,请打开命令提示符并运行以下命令:
sc query bits
如果 BITS 正在运行,应会看到以下输出:
SERVICE_NAME: bits
TYPE: 20 WIN32_SHARE_PROCESS
STATE: 4 RUNNING
如果 BITS 未运行,你将看到以下输出:
SERVICE_NAME: bits
TYPE: 20 WIN32_SHARE_PROCESS
STATE: 1 STOPPED
通常,可以通过停止服务并重启服务来解决 BITS 问题。 若要停止并重启 BITS 服务,请从命令提示符运行以下命令:
sc stop bits
sc start bits
注意
必须以本地管理员身份登录才能停止和重启 BITS。
BITS 无法启动
如果 BITS 服务无法启动,请在事件日志中查找任何与 BITS 相关的错误。 可以使用下表来诊断这些错误的原因。
错误名称 | 错误代码 | 说明 |
---|---|---|
ERROR_SERVICE_DOES_NOT_EXIST | 0x80070424 | 请参阅以下有关 修复 BITS 配置 的部分。 |
ERROR_SERVICE_NOT_IN_EXE | 0x8007043B | BITS 未作为 netsvcs svchost 组中的服务之一列出 |
ERROR_SERVICE_DISABLED | 0x80070422 | BITS 已被禁用。 启用 BITS 服务。 |
ERROR_SERVICE_DEPENDENCY_DELETED ERROR_SERVICE_DEPENDENCY_FAIL | 0x80070433、0x8007042c | 无法启动出现在 BITS 服务依赖项列表中的服务。 确保 BITS 服务的依赖项列表正确: Windows Vista: 当启用对等缓存时,RpcSs、EventSystem (还会 http.sys 和 LanManWorkstation) Windows Server 2003: Rpcss、EventSystem Windowsxp: Rpcss Windows 2000: Rpcss、SENS、Wmi |
ERROR_PATH_NOT_FOUND | 0x80070003 | Windows Vista 前:%ALLUSERSPROFILE%\Microsoft\Network 不存在 |
ERROR_FILE_NOT_FOUND | 0x80070002 | 缺少 Parameters 键。 确保存在以下键和值:HKLM\SYSTEM\CurrentControlSet\Services\BITS\Parameters\ServiceDll = %SystemRoot%\System32\qmgr.dll |
REGDB_E_CLASSNOTREG、EVENT_E_INTERNALERROR | 0x80040154、0x80040206 | 适用于 Windows 2000 的 BITS 依赖于 SENS 和 EventSystem 服务。 如果 COM+ 目录已损坏,BITS 可能会失败并显示此错误代码。 |
BITS 作业失败
如果客户端已正确配置为接收更新,BITS 配置正确,并且 BITS 似乎可以正常启动和运行,则可能会遇到 BITS 作业本身失败的问题。 若要验证它,请在事件日志中查找任何与 BITS 相关的错误。 可以使用下表来诊断这些错误的原因。
错误名称 | 错误代码 | 说明 |
---|---|---|
E_INVALIDARG | 0x80070057 | 在用户的 Internet Explorer 代理设置中指定了不正确的代理服务器名称。 为非 NTLM/Negotiate 的身份验证方案提供了凭据,但用户名或密码为 null 时,也会出现此错误。 将用户的 Internet Explorer 代理设置更改为有效的代理服务器。 或者,对于 NTLM/Negotiate 以外的方案,将凭据更改为不为 NULL 用户名/密码。 |
ERROR_WINHTTP_NAME_NOT_RESOLVED | 0x80072ee7 | BITS 无法解析服务器/代理。 作业所有者上下文中的同一台计算机上的 Internet Explorer 将看到相同的问题。 尝试使用作业所有者的上下文通过 Web 浏览器下载同一文件。 |
ERROR_HTTP_INVALID_SERVER_RESPONSE | 0x80072f78 | 这是暂时性错误,作业将继续下载。 |
BG_E_INSUFFICIENT_RANGE_SUPPORT | 0x80200013 | BITS 使用 HTTP 请求中的范围标头来请求文件的某些部分。 如果服务器或代理服务器不了解范围请求并返回完整文件而不是请求的范围,则 BITS 会将作业置于此错误状态。 在错误期间捕获网络流量,并检查具有 Range 标头的 HTTP GET 请求是否获得有效响应。 检查代理服务器,确保它们已正确配置为支持范围请求。 |
BG_E_MISSING_FILE_SIZE | 0x80200011 | 当 BITS 发送HEAD请求,并且服务器/代理未在响应中返回 Content-Length 标头时,BITS 会将作业置于错误状态,并显示此错误。 检查代理服务器和 WSUS 服务器,确保它们已正确配置。 已知某些版本的 Apache 2.0 代理服务器会表现出此行为。 |
BG_E_HTTP_ERROR_403 | 0x80190193 | 当服务器在任何请求中返回 HTTP 403 响应时,BITS 会将作业置于 ERROR 状态,并显示此错误代码。 HTTP 403 对应于 禁止访问:访问被拒绝。 检查运行作业的帐户的访问权限。 |
ERROR_NOT_LOGGED_ON | 0x800704dd | SENS 服务未收到用户登录通知。 BITS (2.0 及更高版本) 依赖于来自服务控制管理器的登录通知,而服务控制管理器又依赖于 SENS 服务。 确保 SENS 服务已启动并正常运行。 |
修复损坏的 BITS 配置
若要修复损坏的 BITS 服务配置,可以手动输入 BITS 服务配置。
注意
只有在所有其他故障排除尝试都失败的情况下,才应执行此操作。 必须是管理员才能修改 BITS 配置。
若要修复损坏的 BITS 配置,请执行以下步骤:
打开命令提示符。
输入以下命令,键入每个命令后按 Enter:
sc config bits binpath= "%systemroot%\system32\svchost.exe –k netsvcs" sc config bits depend= RpcSs/EventSystem sc config bits start= delayed-auto sc config bits type= interact type=own sc config bits error= normal sc config bits obj= LocalSystem sc privs bits privileges= SeCreateGlobalPrivilege/SeImpersonatePrivilege/SeTcbPrivilege/SeAssignPrimaryTokenPrivilege/SeIncreateQuotaPrivilege sc sidtype bits unrestricted sc failure bits reset= 86400 actions=restart/60000/restart/120000
停止并重启 BITS。
WSUS 代理服务的问题
确保Windows 更新服务可以成功启动。
若要查看Windows 更新服务的当前状态,请打开命令提示符并运行以下命令:
sc query wuauserv
如果 WUAUSERV 正在运行,应会看到以下输出:
SERVICE_NAME: wuauserv
TYPE: 20 WIN32_SHARE_PROCESS
STATE: 4 RUNNING
如果 WUAUSERV 未运行,则会看到以下输出:
SERVICE_NAME: wuauserv
TYPE: 20 WIN32_SHARE_PROCESS
STATE: 1 STOPPED
验证是否可以成功启动 WUAUSERV 服务。 必须以本地管理员身份登录才能停止并重启 WUAUSERV。
若要启动 WUAUSERV 服务,请从命令提示符运行以下命令:
sc start wuauserv
如果客户端代理无法正常启动和运行,检查Windows 更新代理版本。 如果代理不是最新的,请将 Windows 更新 代理更新到最新版本。
还可以重置Windows 更新组件。
运行修补程序或更新代理后,请运行 wuauclt /detectnow
。 检查windowsupdate.log,确保没有问题。
确保可从客户端访问 WSUS 服务器
请确保可以访问 URL http://<WSUSSERVER:port>/iuident.cab
并下载文件,而不会出错。
如果无法从客户端访问 WSUS 服务器,则最可能的原因包括:
- 客户端上存在名称解析问题。
- 存在与网络相关的问题,例如代理配置问题。
使用标准故障排除过程验证名称解析是否在网络上有效。 如果名称解析有效,下一步是检查代理问题。 检查windowsupdate.log (C:\windows) 以查看是否存在任何与代理相关的错误。 可以运行 proxycfg
命令来检查 WinHTTP 代理设置。
如果存在代理错误,请转到 Internet Explorer >工具>Connections>LAN 设置,配置正确的代理,并确保可以访问指定的 WSUS URL。
完成后,可以使用 命令将这些用户代理设置复制到 WinHTTP 代理设置 proxycfg -u
。 指定代理设置后,从命令提示符运行wuauclt /detectnow
并检查 windowsupdate.log错误。
重新生成自动更新代理存储
如果下载更新时遇到问题,并且存在与软件分发存储相关的错误,请在客户端上完成以下步骤:
- 通过从命令提示符运行
sc stop wuauserv
来停止自动汇报服务。 - 将软件分发文件夹重命名 (例如 C:\Windows\SoftwareDistribution) 。
- 通过从命令提示符运行
sc start wuauserv
来重启自动更新服务。 - 在命令提示符下,运行
wuauclt /resetauthorization /detectnow
。 - 在命令提示符下,运行
wuauclt /reportnow
。
检查具有相同 SUSclient ID 的客户端
你可能会遇到控制台中只显示一个 WSUS 客户端的问题。 或者,你可能会注意到,在一组客户端中,一次只有一个出现在控制台中,但显示的确切客户端可能会随时间而变化。 当系统已映像化并且客户端最终具有相同 时, SUSclientID
可能会发生此问题。
对于由于相同 SUSclientID
而无法正常工作的客户端,请完成以下步骤:
通过从命令提示符运行
sc stop wuauserv
来停止自动汇报服务。SUSclientID
从以下位置删除注册表项:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate
通过从命令提示符运行
sc start wuauserv
来重启自动更新服务。在命令提示符下,运行
wuauclt /resetauthorization /detectnow
。在命令提示符下,运行
wuauclt /reportnow
。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈