所以我一直在阅读文档“组策略处理和优先级”。我知道策略是按本地、站点、域、组织单位、子组织单位的顺序应用的。这篇文章不清楚应用到计算机上的顺序,比如软件安装、脚本和新的组策略首选项。
我正在尝试编写一个脚本来调整计算机上某些似乎无法使用首选项的东西,但我需要确定软件安装已经完成,并且首先应用了一些首选项。
更新:
这是一些背景信息。我有一个组策略,其中包含小部件 A 的软件安装(计算机配置\策略\软件设置\分配的应用程序)。小部件 A 将快捷方式放在所有烦人的地方,因此我尝试使用首选项功能(计算机配置\首选项\Windows 设置\快捷方式)删除不需要的快捷方式。该程序有一个小错误,我必须修复它,但发布者没有提供更新的 msi,只是一个将应用更新的 exe。所以我必须有一个启动脚本来运行应该修补程序的 EXE。
似乎在软件安装发生之前应用了“计算机配置\首选项”,因为我的文件删除似乎直到几次重新启动后才生效。似乎有关此软件包的某些内容需要重新启动,因为在我重新启动之前应该修补它的启动脚本会出错。
在我对谷歌的搜索中,我无法找到具体说明订单内容的文档。我也很好奇可用的各种偏好之间的排序是什么。例如,我可以通过首选项设置环境变量。我能否在文件、文件夹或快捷方式首选项中使用这些变量?
我希望某处有一份文件详细描述了该过程。
在执行启动脚本之前处理软件安装策略。有时这正是您想要的,而其他时候则不是。你不能改变它。
当我希望在安装软件之前运行启动脚本时,我最终使用组成员身份来控制启动脚本的执行,并使用命令将计算机添加到控制软件安装的第二个组来结束启动脚本。唯一的问题是,到目前为止,我还没有找到任何可靠的方法来从启动脚本重新启动 Windows XP 或更新的操作系统。(是的,是的——我也尝试了各种方法。如果你愿意,我可以详细讨论它们。)因此,这总是使得这个策略需要两个靴子才能“生效”。
您提到“首选项”,所以我认为您正在考虑通过登录脚本对用户环境进行处理。显然,登录脚本是在登录后执行的。如果您要检查在登录脚本期间是否安装了某个软件,请查询注册表中的 Windows Installer“数据库”以查看该程序是否存在并“退出”。您将在“HKEY_CLASSES_ROOT\Installer\Products”键中找到已安装的产品。显然,您必须找出您正在处理的包的 GUID。
编辑:组策略客户端扩展 (CSE) 处理顺序是根据客户端扩展的 GUID 值执行的,从我能够从文档中收集到的内容。看起来 GUID 数值更高的 CSE 稍后执行。我没有方便的“首选项”CSE 的 GUID,所以我无法告诉您它应该如何操作:在其他 CSE 之前/之后运行。
至少在 Windows XP 上,深入 HKLM\Software\Microsoft\Windows NT\CurrentVersion\WinLogon\GPExtensions 并查找“首选项”的 CSE。REGEDIT 也会对这些 GUID 进行数字排序,因此您可以直观地判断“首选项”CSE 是否将在其他 CSE 之前/之后执行。
有两种运行的脚本。启动脚本在设置计算机首选项后运行(GPO 的计算机设置部分中的内容)。登录脚本在用户登录并应用用户设置后运行。脚本按照它们在 GPO 中列出的顺序同步运行(因此一个脚本必须在下一个脚本开始之前完成)。请注意,默认情况下,Windows XP 实际上会让您在处理网络设置之前登录,这意味着您可以在处理 GPO 之前登录。可以使用位于计算机配置\管理模板\系统\登录\始终在计算机启动和登录时等待网络的 GPO 设置绕过此行为。所以,启动脚本将在计算机首选项之后运行,但在用户首选项之前运行,登录脚本将在所有首选项设置后出现。希望有帮助。
顺序由管理员设置,最后处理的链接顺序最低(因此具有最高优先级)。如果您需要确保在启动时应用策略,请使用设置计算机配置\管理模板\系统\登录\始终在计算机启动和登录时等待网络。还设置在启动期间同步为计算机应用组策略。这迫使系统等到它可以检索和处理计算机策略后才允许用户登录。如果您需要检查组策略是否成功运行,请检查此处列出的日志文件