应用组策略故障排除指南

试用我们的虚拟代理 - 它可以帮助你快速识别和修复常见的 Active Directory 复制问题

本指南提供用于排查组策略问题的基本概念。 你将了解:

  • 如何查找新的故障排除信息。
  • 如何使用事件查看器筛选特定组策略信息。
  • 如何读取和解释事件数据。
  • 用于定位故障点的正确方法。

故障排除清单

  1. 首先读取系统事件日志中记录组策略事件。

    • 警告事件提供了进一步的信息供你遵循,以确保组策略服务保持正常运行。
    • 错误事件提供描述失败和可能原因的信息。
    • 使用事件消息中包含的 “更多信息” 链接。
    • 使用“ 详细信息 ”选项卡可以查看错误代码和说明。
  2. 使用组策略操作日志。

    • 标识要进行故障排除的组策略处理实例的活动 ID。
    • 创建操作日志的自定义视图。
    • 将日志划分为多个阶段:预处理、处理和后处理。
    • 将每个起始事件与其相应的结束事件合并。 调查所有警告和错误事件。
    • 隔离依赖组件并对其进行故障排除。
    • (GPUPDATE) 使用 组策略 update 命令刷新组策略。 重复这些步骤以确定警告或错误是否仍然存在。

重要

刷新组策略更改自定义视图中的活动 ID。 故障排除时,请确保使用最新的活动 ID 更新自定义视图。

确定组策略处理的实例

在查看组策略操作日志之前,必须先确定失败的组策略处理实例。

若要确定组策略处理的实例,请执行以下步骤:

  1. 打开事件查看器。
  2. “事件查看器 (本地) ”下,选择“Windows 日志>系统”。
  3. 双击要排查组策略警告或错误事件。
  4. 选择“详细信息”选项卡,然后检查“友好”视图。 选择“ 系统 ”以展开“ 系统 ”节点。
  5. 系统节点详细信息中查找 ActivityID。 使用此值 (查询中没有左大括号和右大括号) 。 将此值复制到记事本,以便稍后可供使用,然后选择“ 关闭”。

创建组策略实例的自定义视图

计算机通常有多个组策略处理实例。 专用于运行终端服务的计算机通常有多个组策略处理实例,并同时运行。 因此,请务必筛选组策略操作事件日志,以便仅显示要进行故障排除的实例的事件。

使用以下过程创建组策略实例的自定义视图。 通过使用事件查看器查询执行此操作。 此查询为特定组策略处理实例创建组策略操作日志的筛选视图。

若要创建组策略实例的自定义视图,请执行以下步骤:

  1. 打开事件查看器。

  2. 右键单击“ 自定义视图”,然后选择“ 创建自定义视图”。

  3. 选择“XML”选项卡,然后检查“手动编辑查询检查”框。 事件查看器将显示一个对话框,其中说明手动编辑查询会阻止您使用“筛选”选项卡修改查询。选择“”。

  4. 将此步骤结束时提供的事件查看器查询 (复制到剪贴板) 。 将查询粘贴到“ 查询 ”框中。

    <QueryList><Query Id="0" Path="Application"><Select Path="Microsoft-Windows-GroupPolicy/Operational">*[System/Correlation/@ActivityID='{INSERT ACTIVITY ID HERE}']</Select></Query></QueryList>

  5. 将之前从确定组策略处理实例部分保存的 ActivityID 复制到剪贴板。 在“ 查询 ”框中,突出显示“在此处插入活动 ID”,然后按 Ctrl+V 将 ActivityID 粘贴到文本上。

    注意

    请确保不要粘贴前导大括号和尾随大括号 ({ }) 。 必须包括这些大括号才能使查询正常工作。

  6. 在“ 将筛选器保存到自定义视图 ”对话框中,键入对创建的视图有意义的名称和说明。 选择“确定”。

  7. 保存的视图的名称显示在 “自定义视图”下。 选择已保存视图的名称,以在事件查看器中显示其事件。

重要

组策略服务为每个策略处理实例分配唯一的 ActivityID。 例如,在用户登录期间进行用户策略处理时,组策略服务分配唯一的 ActivityID。 刷新组策略时,组策略服务将另一个唯一 ActivityID 分配给负责刷新用户策略组策略实例。

确保组策略具有要查找的所有设置,并且已正确链接。 下面是必须经历的选项卡。 如果它们看起来都不错,请转到有问题的客户端计算机。

  1. 打开提升的命令提示符并运行以下命令。

    gpresult /h gp.html
    
  2. 验证捕获的 gpresult 输出,并查找遇到问题的 GPO。 它将提供一个错误,说明为何未应用 GPO。

  3. 如果输出中 gpresult 存在错误,我们可以基于该错误对问题进行故障排除。 否则,转到下一步。

  4. 打开事件查看器并浏览到应用程序和系统事件日志。 应用程序事件日志将提供组策略更新失败原因的详细信息。

  5. 打开操作事件日志以获取更多详细信息。 有一些事件具有应用的 GPO 列表和拒绝的 GPO 列表以及原因。

可以使用这些基本日志解决大多数 GPO 问题。

组策略日志文件

可以启用详细日志记录并检查生成的日志文件。 详细日志记录可能会降低性能并消耗大量磁盘空间,因此最佳做法是仅在必要时启用详细日志记录。

启用 组策略 服务 (GPSvc) 日志记录

在发生 GPO 问题的客户端上,按照以下步骤启用组策略服务调试日志记录。

  1. 打开注册表编辑器。

  2. 找到并选择以下注册表子项:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion

  3. “编辑 ”菜单上,选择“ 新建>密钥”。

  4. 键入 “诊断”,然后按 Enter。

  5. 右键单击“ 诊断 ”子项,选择“ 新建>DWORD (32 位) 值”。

  6. 键入 GPSvcDebugLevel,然后按 Enter。

  7. 右键单击“ GPSvcDebugLevel”,然后选择“ 修改”。

  8. 在“ 值数据 ”框中,键入 30002 (十六进制) ,然后选择“ 确定”。

  9. 退出注册表编辑器。

  10. 在命令提示符窗口中,运行 gpupdate /force 命令,然后按 Enter。

然后,在以下文件夹中查看 Gpsvc.log 文件: %windir%\debug\usermode

注意

如果 usermode 文件夹不存在,请在 %windir%\debug 下创建它。 如果 %WINDIR%\debug\ 下不存在 usermode 文件夹,则不会创建gpsvc.log文件。

常见问题和解决方案

事件 ID 1129

当由于网络连接问题而无法应用组策略时,会记录事件 ID 1129。

在这种情况下,DC 上会阻止与轻型目录访问协议 (LDAP) 端口 389 的连接。 命令 gpupdate 失败,出现以下错误:

检查事件日志时,可能会发现以下事件说明:

The processing of Group Policy failed because of lack of network connectivity to a domain controller. This may be a transient condition. A success message would be generated once the machine gets connected to the domain controller and Group Policy has successfully processed. If you do not see a success Message for several hours, then contact your administrator.

在这种情况下,请启用 gpsvc 调试日志。 在 gpsvc 日志中,你可能会发现输出“GetLdapHandle: 无法将 DC> 与 81 连接<”。

启用网络跟踪以验证:

  • 有一个 ldap 查询在站点级别完成。
  • 查询返回该站点的两个条目,用于保留 ldap 服务角色。
  • 对于其中一个,我们可以看到正在执行名称解析。
  • 由于名称解析成功,因此它会尝试执行 ldap 绑定,但在 TCP 握手时失败,因为端口 389 被阻止。
  • 如果 DC 没有针对端口 389 上的 TCP 握手的应答,后续步骤是让客户网络团队参与,并向他们提供此信息。
  • 确保在这种情况下,你使用上述操作计划中指定的所有日志,将它们关联起来,并且它们将引导你找出根本原因或至少缩小问题的范围。

事件 ID 1002

下面是事件 ID 1002 的说明:

The processing of Group Policy failed because of a system allocation failure. Please ensure the computer is not running low on resources (memory, available disk space). Group Policy processing will be attempted at the next refresh cycle.

当计算机从资源不足状态返回时,通常会解决此错误事件。 可能的解决方案包括:

  1. 确保计算机的内存或可用磁盘空间不低。
  2. 如果计算机长时间运行,请重启计算机。

事件 ID 1006

下面是事件 ID 1006 的说明:

The processing of Group Policy failed. Windows could not authenticate to the Active Directory service on a domain controller. (LDAP Bind function call failed). Look in the Details tab for error code and description.

此错误事件通常在更正到目录的绑定后解决。 组策略服务记录错误代码,该代码显示在 事件查看器 中错误消息的“详细信息”选项卡上。 错误代码 (显示为小数) 和错误说明字段进一步标识失败的原因。 使用以下列表评估错误代码:

  • 错误代码 5 (访问被拒绝)

    此错误代码可能指示用户没有访问 Active Directory 的权限。

  • 错误代码 49 (凭据) 无效

    此错误代码可能指示用户的密码已过期,而用户仍在计算机上登录。 若要更正无效的凭据,请执行以下操作:

    1. 更改用户的密码。
    2. 锁定/解锁工作站。
    3. 检查是否有任何系统服务作为用户帐户运行。
    4. 验证服务配置中的密码是否适用于用户帐户。
  • 错误代码为 258 (超时)

    此错误代码可能指示 DNS 配置不正确。 若要更正超时问题,请使用 nslookup 工具来确认 _ldap._tcp。<domain-dns-name> 记录已注册,并指向正确的服务器 (其中 <domain-dns-name> 是 Active Directory 域) 的完全限定域名。

    注意

    如果网络限制或阻止 Internet 控制消息协议 (ICMP) 数据包,则这些步骤可能会产生不同的结果。

事件 ID 1030

下面是事件 ID 1030 的说明:

The processing of Group Policy failed. Windows attempted to retrieve new Group Policy settings for this user or computer. Look in the Details tab for error code and description. Windows will automatically retry this operation at the next refresh cycle. Computers joined to the domain must have proper name resolution and network connectivity to a domain controller for discovery of new Group Policy objects and settings. An event will be logged when Group Policy is successful.

检查 LDAP 端口是否已打开。 如果不是,请确保端口在防火墙上以及客户端和域控制器本地处于打开状态。

如何确定端口块

确保客户端无法解析主机名的 DNS 名称解析

  • 如果客户端无法解析主机名,则最好验证上面列出的客户端应使用的主机名解析序列。 如果客户端使用的任何资源中都不存在该名称,则必须决定添加该名称的资源。 如果名称存在于其中一个资源中,例如 DNS 服务器或 Windows Internet 名称服务 (WINS) 服务器,并且客户端未正确解析该名称,请将注意力集中在排查该特定资源的问题上。
  • 此外,确认客户端正在尝试解析主机名,而不是 NetBIOS 名称。 许多应用程序具有多种方法,可用于解析名称。 对于邮件和数据库应用程序尤其如此。 可将应用程序配置为使用 NetBIOS 连接到资源。 根据客户端配置,客户端可能会绕过主机名解析。 从那里,有必要将连接类型更改为 TCP/IP 套接字,或将问题作为 NetBIOS 问题进行故障排除。

组策略容器权限

使用以下 Get-GPPermission PowerShell cmdlet 获取指定 GPO 上所有安全主体的权限级别:

Get-GPPermission -Name "TestGPO" -All

事件 ID 1058

下面是事件 ID 1058 的说明:

The processing of Group Policy failed. Windows attempted to read the file %9 from a domain controller and was not successful. Group Policy settings may not be applied until this event is resolved. This issue may be transient and could be caused by one or more of the following:
1. Name Resolution/Network Connectivity to the current domain controller.
2. File Replication Service Latency (a file created on another domain controller has not replicated to the current domain controller).
3. The Distributed File System (DFS) client has been disabled.

正确连接到组策略模板。 组策略服务记录域控制器的名称和错误代码,显示在 事件查看器 中错误消息的“详细信息”选项卡上。 错误代码 (显示为小数) 和错误说明字段进一步标识失败的原因。 使用以下列表评估错误代码:

  • 错误代码 3 (系统找不到指定的路径)

    此错误代码通常指示客户端计算机找不到事件中指定的路径。 测试客户端与域控制器的 sysvol 的连接:

    1. 标识计算机使用的域控制器。 域控制器名称记录在错误事件的详细信息中。

    2. 确定在用户或计算机处理期间是否发生故障。 对于用户策略处理,事件的 “用户” 字段将显示有效的用户名;对于计算机策略处理, “用户 ”字段将显示“SYSTEM”。

    3. gpt.ini 的完整网络路径编写为 \\<dcName>\SYSVOL\<domain>\Policies\<guid>\gpt.ini 其中 <dcName> 是域控制器的名称, <domain> 是域的名称, <guid> 是策略文件夹的 GUID。 所有信息都将显示在 事件中。

    4. 验证是否可以使用在上一步中获取的完整网络路径读取 gpt.ini 。 为此,请打开命令提示符窗口并键入 <file_path>,其中 <file_path> 是上一步中构造的路径,然后按 Enter。

      注意

      必须以以前凭据失败的用户或计算机的身份运行此命令。

  • 错误代码 5 (访问被拒绝)

    此错误代码通常指示用户或计算机没有访问事件中指定的路径的适当权限。 在域控制器上,确保用户和计算机具有读取事件中指定的路径的适当权限。 测试计算机和用户凭据:

    1. 注销并重新启动计算机。
    2. 使用以前使用的域凭据登录计算机。
  • 错误代码 53 (找不到网络路径)

    此错误代码通常指示计算机无法解析所提供的网络路径中的名称。 测试网络路径名称解析:

    1. 标识计算机使用的域控制器。 域控制器的名称记录在错误事件的详细信息中。
    2. 尝试使用路径 \\<dcName>\netlogon 连接到域控制器上的 netlogon 共享,其中 <dcName> 是错误事件中的域控制器的名称。

事件 ID 1053

下面是事件 ID 1053 的说明:

The processing of Group Policy failed. Windows could not resolve the user name. This could be caused by one or more of the following:
1. Name Resolution failure on the current domain controller.
2. Active Directory Replication Latency (an account created on another domain controller has not replicated to the current domain controller).

组策略服务记录域控制器的名称和错误代码。 此信息显示在 事件查看器 中错误消息的“详细信息”选项卡上。 错误代码 (显示为小数) 和错误说明字段进一步标识失败的原因。 使用以下列表评估错误代码:

  • 错误代码 5 (访问被拒绝) :此错误代码可能指示用户的密码已过期,而用户仍在计算机上登录。 如果用户最近更改了密码,则问题可能会在 Active Directory 复制成功后消失。

    1. 更改用户密码。
    2. 锁定/解锁工作站。
    3. 检查是否有任何系统服务作为用户帐户运行。
    4. 验证服务配置中的密码是否适用于用户帐户。
  • 错误代码 14 (没有足够的存储空间可用于完成此操作)

    此错误代码可能指示 Windows 没有足够的内存来完成该任务。 调查系统事件日志中是否存在任何其他特定于内存的问题。

  • 错误代码 525 (指定的用户不存在)

    此错误代码可能指示对组织单位的权限不正确。 用户需要对包含用户对象的组织单位的读取访问权限。 同样,计算机需要对包含计算机对象的组织单位的读取访问权限。

  • 错误代码 1355 (指定的域不存在或无法联系)

    此错误代码可能指示 DNS) (名称解析错误或配置不正确。 使用 nslookup 确认可以解析用户域中域控制器的地址。

  • 错误代码 1727 (远程过程调用失败,未执行)

    此错误代码可能指示防火墙规则正在阻止与域控制器通信。 如果已安装第三方防火墙软件,检查防火墙的配置,或尝试暂时禁用它并验证组策略进程是否成功。

事件 ID 1097

下面是事件 ID 1097 的说明:

The processing of Group Policy failed. Windows could not determine the computer account to enforce Group Policy settings. This may be transient. Group Policy settings, including computer configuration, will not be enforced for this computer.

域计算机向域进行身份验证,域用户也进行身份验证。 Windows 要求计算机登录,然后才能将组策略应用到计算机。 可能的解决方案包括:

  • 验证计算机上的时间是否与域控制器上的时间同步。
  • 如果计算机在与域控制器不同的时区中配置,则考虑时区错误配置。
  • 计算机与域控制器之间的时差大于 5 分钟可能会导致计算机无法通过域进行身份验证。 使用 w32tm /resync 命令对时间服务强制时间同步。
  • 重启计算机。

事件 ID 4016 和事件 ID 5016

在定期刷新组策略期间,服务使用在预处理阶段收集的信息来应用每个策略设置。 该服务通过将以前收集的信息传递给每个系统和非系统客户端扩展来实现此目的。 此阶段首先记录客户端扩展 (CSE) 处理事件。

事件 ID 事件类型 解释
4016 信息 每次组策略客户端扩展开始处理时,组策略服务都会记录此事件。
5016 成功 当组策略客户端扩展成功完成其处理时,组策略服务会记录此事件。

转到“事件 ID 5016”下的“ 详细信息 ”选项卡时,可能会发现以下返回状态:

ErrorCode 2147483658 <-> 0x8000000a       -2147483638               E_PENDING                    "The data necessary to complete this operation is not yet available"

注意

在审核客户端扩展处理期间,预期返回值“-2147483638 (E_PENDING) ”。 它指示组策略引擎已成功启动异步线程来处理审核扩展信息。 这也意味着,即使新的审核设置生效或在客户端上应用,也会记录返回值。

确定高级审核客户端扩展 (AuditCSE) 处理

从事件 ID 5016 收到返回值2147483658后,可以在 Security-Audit-Configuration-Client>Operational 事件日志下检查 AuditCSE 处理的详细级别事件。 此信息可用于观察高级审核组策略设置的处理情况,从而检测任何故障/错误。

  1. 审核客户端扩展 (Auditcse.dll) 将处理审核客户端扩展。
  2. 它在 “安全-审核-配置-客户端>操作日志”下有自己的日志记录。

按照以下步骤查看 Security-Audit-Configuration-Client>Operational 事件日志,以便对审核组策略设置进行故障排除:

  1. 打开 事件查看器
  2. “事件查看器 (本地) ”下,选择“应用程序和服务日志>Microsoft>Windows>安全性-审核-配置-客户端>操作”。
  3. 双击“ 警告 ”或 “错误” 事件进行故障排除。 此外,请查看这些事件的 “详细信息 ”选项卡,了解任何 “错误” 值。
  4. 否则,请查看 Informational 事件以捕获审核扩展的完整处理。

在联系Microsoft 支持部门之前收集关键信息

在完成支持请求之前,建议使用 Windows Live 转储功能在受影响的计算机上保存内核内存快照。 为此,请按照下列步骤操作:

  1. 通过运行以下命令捕获组策略服务详细日志记录:

    md %windir%\debug\usermode
    
    reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Diagnostics" /v GPSvcDebugLevel /t REG_DWORD /d "0x00030002"
    
  2. 使用 gpupdate /force 命令刷新本地和基于 AD 的组策略设置。

    提示

    如果排查特定用户或计算机缺少设置的问题,请使用以下命令之一:

    • Gpupdate /force /target:computer
    • Gpupdate /force /target:user
  3. 运行以下命令,将策略的结果集 (RSoP) 报告保存到 HTML 文件:

    gpresult /h %Temp%\GPResult.htm
    
  4. 运行以下命令,将 RSoP 摘要数据保存到 txt 文件:

    gpresult /r >%Temp%\GPResult.txt
    
  5. 通过运行以下命令导出 GPExtensions 注册表项:

    reg export "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions" %Temp%\GPExtensions.reg
    
  6. 通过运行以下命令导出系统、应用程序和组策略操作事件查看器日志:

    wevtutil.exe export-log Application %Temp%\Application.evtx /overwrite:true
    
    wevtutil.exe export-log System %Temp%\System.evtx /overwrite:true
    
    wevtutil.exe export-log Microsoft-Windows-GroupPolicy/Operational %Temp%\GroupPolicy.evtx /overwrite:true
    
  7. 捕获以下文件:

    • %Temp%\Application.evtx
    • %Temp%\System.evtx
    • %Temp%\GroupPolicy.evtx
    • %Temp%\GPExtensions.reg
    • %Temp%\GPResult.txt
    • %Temp%\GPResult.html
    • %windir%\debug\usermode\gpsvc.log
  8. 完成后,可以通过运行以下命令来停止组策略服务日志记录:

    reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Diagnostics" /v GPSvcDebugLevel /t REG_DWORD /d "0x00000000" /f
    

数据收集

如果需要 Microsoft 支持方面的帮助,我们建议按照使用 TSS 收集信息中提到的步骤收集信息,解决组策略问题