经验排错法
上面说的是排错的一般方法,属于事物的普遍性,如果我们能够掌握一些特殊规律,在排错时有针对性地进行检查,效果往往会更好一些。
1.应用程序管理策略不工作
首先激活日志,注意这里说的日志是专门监视应用程序管理策略的,打开注册表,在以下位置HKEY_LOCAL_MACHINESoftware PoliciesMicrosoftWindowsInstaller新建一个字符串值,命名为Logging,值设为voicewarmup。这里,voicewarmup有不同的含义,其中,I表示状态消息,w:非致命警告,e:所有错误信息,a:启动操作;r:特定操作记录;u:用户请求; c:初始用户界面参数;m:内存不足;p:终端属性;v:详细输出;o:磁盘空间不足消息。
除了修改注册表外,我们还可以在组策略中激活该日志。激活该日志后,重新执行一遍安装程序,这样整个安装程序的详内容就会被记录下来,在命令行键入cd %temp%,查找mis开头扩展名为log的文件就是了,文件名是随机的。
关于应用程序安装问题,笔者的经验是,要么是GPO有问题,要么就是MSI安装包有问题。当然,还有一种特殊情况,操作系统问题,比如,有一些软件就没有办法安装在特定的操作系统上,或者目标计算机的“添加/删除程序”不能正常使用。笔者的经验是,使用一个标准的MSI包进行问题隔离,看看究竟是MSI 包的问题还是GPO问题,这样,排错的目标性就很明确了。
2.注册表、软件策略、登录/注销/启动/关闭脚本不生效
检查Registry.pol 文件是否正确,该文件可以用记事本打开。
3.文件夹重定向策略不生效
关于文件夹重定向,在实际工作中这一块的问题比较多,但是这些问题都是由于管理员的粗心导致。
当您在做重定向设置时,重定向到的文件夹是否是从网络路径获取的?用户是否可以通过网络找到这个文件夹?排措时可以在地址栏里使用UNC路径试试是否可以正常访问这个文件夹。
每一位用户对这个文件夹是否有写的权限?默认,每一个文件夹被共享出来后,每位用户对它只有读取权限。
4.假象错误
有一类错误根本就不是组策略错误,但是很容易让人误以为是组策略错误。
(1)在域控制器计算机上每隔 5 分钟,在成员服务器计算机上每隔 20 分钟,事件查看器中都会记录下列错误信息:
Userenv 1000
Windows cannot access the registry information at \domainname.comsysvoldomainname.comPolicies{ file://\domainname.comsysvoldomainname.comPolicies{31B2F340-016D D-11D2-945F-00C04FB984F9}Machine egistry.pol with (1398).
SceCli 1001
Security policy cannot be propagated.Cannot access the template.Error code=3.
Userenv 1000
The Group Policy client-side extension Security was passed flags (17) and returned a failure status code of (3).
NtFrs 13508
Description:The File Replication Service is having trouble enabling replication from (computername) to (computername) for c:winntsysvoldomain; retrying.
表面上看,错误是由Userenv报的,很容易让人感觉是组策略出了问题,但经过多方检查,这个错误的根源是时间不统一造成的。
解决这一问题的方法就是将所有计算机与域控制器时钟时间同步:
net time \(domain controller name)/set/y
在所有出现此问题的服务器上停止然后重新启动文件复制服务,打开事件查看器,确定没有再出现错误。
(2)域控制器的组策略对象无法使用,当使用时,将记录或显示多个问题。
应用程序日志中包含下列错误消息:
UserEnv 1000 The Group Policy client-side extension Security was passed flags (17) and returned a failure status code of (3).
SceCli 1001 Security policy cannot be propagated.Cannot access the template.Error code = 3. \domain namesysvoldomain namePolicies{31B2F340-016D-11D2-945F-00C04FB984F9}MachineMicrosoftWindows NTSecEditGptTmpl.inf.
UserEnv 1000 Windows cannot access the registry information at \domain namesysvol domain namePolicies{31B2F340-016D-11D2-945F-00C04FB984F9}Machine egistry.pol with (51).
当使用“域安全”策略和“默认域控制器安全设置”策略尝试访问“组策略”对象时,将显示“Group Policy Error”这一错误消息。此消息指出:“Failed to Open Group Policy Object. You may not have appropriate rights. Details:The network path not found.”
原因:导致这一问题的原因是主域控制器上面有多个网络适配器,而主网络适配器却没有绑定“文件和打印共享”,自然,当域控制器尝试通过主网络适配器访问其 Sysvol 共享以读取组策略。因为通过该适配器无法访问此共享,所以操作不成功。
同样,这个问题从根源上说其实也不是组策略出了问题,而是网络适配器的故障,但却是由UserEnv表现出来的。
组策略排措备忘录
1.一定要确认客户端是否拿到了您设定的策略,很多组策略故障其实并不是真正意义上的故障,是客户端根本就没有拿到相关的策略。这里,还要注意一点,那就是组策略有计算机策略和用户策略,笔者曾经见过不少人在一个OU内(该OU下有10个用户)链接了一个组策略,内容是关闭所有计算机的自动播放,结果策略没有生效。切记,计算机策略对计算机生效,用户策略对用户生效。
2.检查用户对组策略是否有读取权限,重点排查userenv中的cannot access语句。
3.若有多台成员服务器,要确保组策略的一致性,也就是说,这些服务器之间的复制正常,方法:gpotool。
4.安全策略关注winlogon.log,其他问题仔细看看userenv.log。
5.确保故障不是软件的Bug引起的,如何确定是否为软件Bug,笔者的经验是:做隔离,搭一个试验环境,模拟生产环境,排除其他的干扰,看看问题是否会重现。
6.透过现象看本质,有些问题以组策略的问题形式表现出来,但往往不一定是组策略的问题。