Windows server 2012 R2组策略启动脚本故障处理
2018-11-07
故障现象
域的组策略启动脚本在Windows 7下无法正常运行,原来 在Windows Server 2003 R2下执行很正常,不管是Windows XP还是Windows 7下都可以顺利执行,使用的是VBS脚本感觉比执行共享的.bat文件效率来的高一些。首先想是不是VBS脚本文件太老了,将该VBS文件拷贝到本地执行,可以顺利完成映射共享目录的任务,使用Gpresult/V(操作系统组策略结果工具)来检测提示如图1所示。脚本正常执行,但没反馈任何结果。使用\域控制器IPsysvol域 名policies组策略名UserScriptsLogonxxx.vbs执行也正常映射。这是什么原因呢?
原因查找
现有域控下组策略运行正常,升级域控后不行。原有VBS脚本也能正常运行,域客户端也没变化。是否因为域用户不是本地管理员用户呢?把域用户加入到本地管理员组中去也不行。没办法直接把Windows Server 2012 R2的手册翻出来,关于组策略这一节反复查看,网上也找到了有关的信息,有的说是脚本问题,有的建议将.bat放在启动组,但都没法真正解决问题。
请教了一些微软专家,考虑是不是因为UAC的原因。有了这个思路,认真思考了这个问题,因为从Windows 2008 R2引入了UAC机制,估计是这个UAC机制让域用户提升管理员权限时受阻。虽然已将域用户加入到本地管理员组中,但在执行组策略时仍未将域用户管理员权限进行提升。
UAC是指用户账户控制(User Account Control),是微软从Windows Vista开始使用的新结构技术,可以帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统,同时也可以帮助组织部署更易于管理的平台。使用UAC,应用程序和任务总是在非管理员账户的安全上下文中运行,但管理员专门给系统授予管理员级别的访问权限时除外。UAC会阻止未经授权应用程序的自动安装,防止无意中对系统设置进行更改。
图1 检测提示信息
图2 修改安全选项
故障解决
基于上述考虑,从组策略中的UAC控制中寻找解决方案。
Windows Server 2012 R2的组策略的UAC控制在哪里呢?终于在组策略中子分类中找到了:计算机配置→策略→Windows设置→安全设置→本地策略→安全选项。这里面关于UAC的控制条目较多,要修改哪个呢?经过反复试验。只需修改下面三条即可(如图2)。
1.用户账户控制:管理员批准模式中管理员的提升权限提示的行为:设置为不提示直接提升。
2.用户账户控制:以管理员批准模式运行所有管理员:设置为已禁用。
3.用户账户控制:用户于内置管理员账户的管理员批准模式:设置为已禁用。
修改后,在Windows 7客户端下执行Gpupdate /force强制刷新策略,再重启电脑(修改这个策略必须重启电脑),启动无法执行组策略脚本的故障消失。
此类故障应该较为多见,只是没有详细的故障处理方法,对于启动执行VBS脚本不成功的都可以同样处理。