排查 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 帐户下运行。 若要将服务配置为在正确的帐户下运行,请执行以下步骤:

  1. 打开命令提示符并运行以下命令:

    sc config bits obj= LocalSystem
    

    obj=LocalSystem 之间必须有一个空格。 如果成功,应会收到以下输出:

    [SC] ChangeServiceConfig SUCCESS
    
  2. 停止并重启 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 配置,请执行以下步骤:

  1. 打开命令提示符。

  2. 输入以下命令,键入每个命令后按 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
    
  3. 停止并重启 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