组策略排错 你必须知道在什么地方查找问题

导读:只有知道在什么地方查找问题,知道如何启用组策略日志,并利用现有的管理工具,才能成功地排除组策略故障。

组策略是一项复杂的技术,它的正常运作靠的是多个随时可能会发生变化的部分之间的协同工作。通常来说,当你测试某个组策略时,与组策略有关的问题就会出现。很少的时候,这些问题之间看起来没有什么关联,也不容易发现组策略与这些问题有关。不管原因是什么,当组策略出问题时,你通常应该检查多个地方以找到解决方案。


要成功地解决组策略相关的问题,关键是知道去哪儿查找故障。组策略的执行包括两个阶段,因此要找出问题的所在,你可以从两个主要区域开始。第一阶段是核心执行阶段,Windows通过查询活动目录(AD)来找出需要将哪个组策略对象(GPO)应用到当前计算机或用户,哪个组策略区域(如,管理模板、软件安装)需要被执行,以及计算机或用户在上一次应用策略之后该组策略是否发生过改变。核心执行阶段需要基础结构中的几个部分协同工作,包括DNS、AD、文件复制服务(FRS)和网络。在核心执行阶段,任何一个部分如果出了问题,整个组策略的执行都会出现问题。


执行过程的第二阶段包括客户端扩展,像安全性设置、管理模板和文件夹重定向。客户端扩展通过执行和应用在核心执行阶段中找到的组策略中的设置来实现组策略。通常来说,如果问题发生在客户端扩展执行阶段,则问题可以限定在一个客户端扩展之中——甚至限定在通过客户端扩展来执行的组策略——以及计划在后面继续执行的其它组策略。要找出客户端扩展中存在的问题不是一件容易的事情,因为每一个实现组策略的扩展在实施任务时采用的方式都有些不同,生成日志的级别也不同。


要成功地排除故障,两个执行阶段中生成的日志非常关键。日志文件通常能够解释那些不太容易发现的问题。如果组策略组结果集(RSoP)报告和基础结构组件检查都不能给出解决方法,日志中有时会包含一些重要的错误信息,明确地指出问题的所在。


没有办法通过一项设置来启动所有的组策略日志。你可以通过修改注册表键值来手工启动每个日志。表1列出了用于组策略的日志和相应的注册表键值。另外,你也可以用我编写的工具(名为gpolog.adm的管理模板文件)来启动任何一个或者所有与组策略相关的日志,这个方便快捷的工具是免费的,你可以通过以下网址下载:

“http://www.gpoguy.com/tools.htm”。不管问题出现在核心执行阶段还是在客户端扩展阶段,按照我提供的步骤来操作都会有助于故障的排除。

表1:组策略日志

描述

注册表键值

在应用程序事件日志中记录详细的核心执行日志

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Diagnostics\RunDiagnosticLoggingGroupPolicy = REG_DWORD 0x1

在应用程序事件日志中记录详细的软件安装日志

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Diagnostics\RunDiagnosticLoggingAppDeploy = REG_DWORD 0x1

在应用程序事件日志中记录详细的Microsoft远程信息服务(RIS)选项日志

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Diagnostics\RunDiagnosticLoggingIntellimirror = REG_DWORD 0x1

详细的用户环境日志(写入%windir%\debug\usermode\userenv.log

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ UserEnvDebugLevel = REG_DWORD 0x10002

详细的文件夹重定向客户端扩展日志(写入 %windir%\Debug\UserMode\fdeploy.log

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Diagnostics\FDeployDebugLevel = REG_DWORD 0x0F

详细的软件安装客户端扩展日志(写入%windir%\Debug\UserMode\appmgmt.log

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Diagnostics\ AppmgmtDebugLevel = REG_DWORD 0x9B

详细的安全性客户端扩展日志(写入%windir%\security\logs\winlogon.log) 

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions\{827D319E-6EAC-11D2-A4EA-00C04F79F83A}\ExtensionDebugLevel = REG_DWORD 0x02

步骤1:复查最近的执行周期
要判断一台工作站或服务器为什么存在组策略执行问题的第一步是找出最后一个组策略执行周期内都发生了什么事情。要完成这一任务,你需要在Windows Server 2003或Windows XP中安装使用组策略管理控制台(GPMC)或Windows 2000所带的gpresult.exe命令行工具。

组策略管理控制台提供了组策略结果向导,它可以查询Windows Server 2003和Windows XP系统并生成报告,指出在最后一个执行周期中在该系统中的指定用户身上都发生了什么事情。你也可以在命令行方式下运行gpresult.exe,得到的数据与组策略结果向导所提供的内容是相同的。如果你用的是Windows 2000系统且使用的是Microsoft Windows 2000资源包中的gpresult.exe,你只能得到Windows Server 2003和Windows XP所能提供的数据的一个子集。因为Windows 2000不包含组策略组结果集,它只存在于后续版本的操作系统。


要运行组策略结果向导,启动组策略管理控制台,右键点击组策略结果节点,然后运行向导。向导会问你在本地计算机还是远程计算机上收集信息。


指定了计算机之后,如果你想收集特定用户的策略设置,可以选择一个已经登录到该计算机的用户账户。向导会访问你选定的计算机,使用Windows管理规范(WMI)来收集最近的组策略执行数据,最后将报告显示在组策略管理控制台的结果面板中。


从排错的角度来看,结果中最值得关注的部分包含在摘要和策略事件标签页。摘要标签页提供了在最近一个执行周期中,在计算机和特定用户之上应用的策略执行动作的总览。看一看摘要标签页中的Component Status部分,就知道核心执行阶段或客户端扩展阶段中是否有失败的部分。如图1所示,如果Group Policy Infrastructure的执行状态显示为“Failed”,则表示核心执行阶段出了问题,如果Client-side Extension的执行状态显示为“Failed”,则表示客户端扩展执行阶段出了问题(如文件夹重定向)。


图1:表明客户端扩展阶段操作失败的错误消息

策略事件标签页为你的排错工作提供了更多的有用信息。通过对组策略结果向导所查询的计算机上的应用程序事件日志进行过滤,就得到了此标签页上的内容。过滤后的视图只显示与组策略有关的事件。在这里,你可以得到很多有价值的信息,知道哪个部分工作正常,哪个部分存在问题。我们来看一个例子,假设你的登录脚本没有运行,但是摘要标签页中的脚本客户端扩展组件状态却显示成功了。如果你检查策略事件标签页,就可以看到如图2所示的与脚本执行有关的错误,它会告诉你脚本文件找不到了。可能是服务器上的脚本文件丢失了,也可能是权限问题。不管怎样,你发现了可以追踪到问题根源的线索。在利用摘要和策略事件标签页中的信息缩小了问题范围之后,可以开始深入分析了。

图2:指明脚本丢失的策略事件

步骤2:通过检查基础结构来排除核心执行阶段中的问题
下面我们来谈谈组策略结果向导指示的核心执行阶段失败(即组策略基础结构组件状态显示为Failed)。这样的失败通常说明在基础架构中存在问题,这些问题与管理组策略信息的客户端或域控制器(DC)有关。需要注意的是,这里所说的客户端,既可以是服务器也可以是工作站。有些技术可以导致核心执行问题。我们可以按照下面的步骤进行检查:


  • TCP/IP NetBIOS Helper服务是否运行在客户机之上?要成功执行组策略,这个服务是必须的。要检查该服务,可以在命令行提示符打入net start命令,以获得当前正在运行服务的列表;也可以访问开始菜单中的管理工具程序组,再选择微软管理控制台(MMC)服务管理单元以验证该服务已经启动。

  • 客户机上的DNS是否采用了正确的配置以确保系统能够正确地解析DC的名称?
  • 网络是否启用了ICMP协议?在组策略执行之前,客户机和DC必须能够通过ICMP来完成低速链接检测。如果没有启用ICMP协议,所有的组策略执行都会失败。
  • 客户机能够与DC通讯吗?能够访问存储在DC的Sysvol中的组策略对象副本吗?如果不能,组策略执行将会失败。你可以使用gpotool.exe(微软Windows 2000资源包中的工具)来检索域中的所有DC,并可以确定与组策略存储相关的Sysvol复制是否同步。不同步的Sysvol复制通常说明系统中存在FRS复制问题。如果你想知道如何解决Windows Server 2003上的FRS问题,请参看微软的技术文档 “HOW TO:在Windows Server 2003中解决文件复制服务的问题”,网址是:“http://support.microsoft.com/kb/327341/zh-cn”。还有一个名为Ultrasound的FRS监视和排错工具可以帮助你识别及纠正FRS复制问题,你可以通过下面的地址下载这一工具:“http://www.microsoft.com/downloads/details.aspx?FamilyID=61acb9b9-c354-4f98-a823-24cc0da73b50&DisplayLang=en”。
    也可以查看客户机上的应用程序事件日志,寻找那些事件来源为Userenv的事件日志,你可以从这些日志中得到核心执行问题的线索。这些事件通常与核心执行相关,有时也包含在执行过程中所发生的某些错误的信息。在这种情况下,你最好借助gpolog.adm模板来启用详细的应用程序事件日志。

步骤3:通过应用程序事件日志解决客户端扩展问题
如果组策略结果向导显示问题与特定的客户端扩展有关,接下来就应该着重分析是什么原因致使扩展执行失败。从查看应用程序事件日志中的相关错误开始。对于特定的客户端扩展问题,你通常会看到下面这些内容:

  • Folder Redirection(用于文件夹重定向策略)
  • Userinit(用于脚本策略)
  • Scecli(用于安全性设置策略)
  • Application Management(用于软件安装策略)
  • Userenv(用于管理模板策略和核心处理)

光靠应用程序事件日志是不够的,你可能需要更深入地探索以发现特定的客户端扩展问题。

步骤4:为核心或客户端扩展执行启用日志
如果应用程序事件日志中的信息不够详细,你可能需要更深入地研究核心执行或客户端扩展阶段的问题。我前面提到的gpolog.adm模板可以打开各种日志。最好从Userenv日志(写入%windir%\debug\usermode)开始分析,该日志可以捕获核心及客户端扩展执行阶段中每个步骤的详细信息,也包括用户配置文件的活动。这个文件在每个组策略执行周期中都会被更新,通过它,你遍历每个客户端扩展的执行动作。可以看到一个客户端扩展是否真的被成功执行,如果没有的话,还可以看到原因。例如,日志文件可能显示客户端扩展没有运行,原因是它所处理的组策略对象从上个周期到目前为止并没有发生改变。


最后,你可以启用详细日志以帮助你排除特定客户端扩展中存在的错误。例如,你可以启用软件安装扩展的详细日志,从而判断一个安装包为什么不能够被正确安装,是客户端扩展的问题还是包本身的问题。如果问题与包有关,你可以启动管理模板策略(计算机配置\管理模板\Windows组件\Windows安装服务\日志)中的详细Windows安装日志来进一步跟踪问题。

要讲究方法
组策略排错必须采用系统的、循序渐进的方法,首先是缩小问题范围,然后再寻求解决方案。相信我前面谈到的工具和建议可以帮助你尽量地缩短排错的时间,轻松地找到解决方案。

解决方案快照:
问题:组策略执行失败
解决方案:启动组策略日志并实施排错
所需资源:Windows Server 2003Windows XP的组策略管理控制台;用于启动组策略日志的gpolog.adm工具(可选)
难度系数:3/5
解决步骤:

1. 使用组策略管理控制台组策略结果向导复查最近的处理周期。

2. 如果是核心执行阶段中的问题,检查相关的基础结构组件。

3. 如果是客户端扩展阶段中的问题,启用应用程序事件日志并查找错误。

4. 为了解决核心执行和(或)客户端扩展执行问题,深入研究与之有关的日志。

分享到