我用谷歌搜索过,但还没有找到答案。
场景:我的一个 GPO 有一个需要很长时间才能完成的启动脚本。由于某些原因,我们必须同步运行脚本。自然地,这会导致登录屏幕出现之前的启动时间变慢(有时长达 15 分钟!)。
在对肇事者脚本进行剖析和分析后,我最终确定需要很长时间才能完成的步骤不会影响后续 GPO 的结果。换句话说,该特定步骤(以及之后的所有步骤)可以在后台运行。
我的问题:启动脚本是否有可能只是“触发”另一个脚本/程序,即使启动脚本退出,该脚本/程序也会运行完成?也就是说,即使启动脚本的进程结束,启动脚本的“子进程”也会继续存在?
附加信息:域控制器是 2008 和 2008 R2。工作站是 Windows XP。
抱歉没有早点回答(我自己的问题)。
所以,这就是我最终解决问题的方式。
在启动时,启动脚本会创建一个
at
作业。由于 Startup Scripts 以 SYSTEM 身份运行,因此该at
作业将类似地在 SYSTEM 权限下运行。at
作业配置为在创建后运行 2 分钟。作业中的命令
at
是实际的工作负载脚本。它会启动它应该做的任何有效载荷。由于它是作为预定作业启动的,因此它不关心当时谁登录了。瞧!任务完成 :-)
假设启动脚本是一个批处理文件:
http://www.robvanderwoude.com/call.php
在以前的工作中遇到过类似情况,我发现最好的解决方案是为要执行的脚本创建一个包装程序。登录脚本启动该程序,该程序又以低优先级模式运行真实脚本。
这样用户就不会受到影响,因为操作系统会根据机器上运行的其他内容自动调整脚本的执行速度。创建这样的包装器当然超出了本网站的范围。
只是为了选项,此时您还可以尝试将脚本放在 GPO 中:
计算机配置\策略\管理模板\系统\登录\在用户登录时运行这些程序
或者
用户配置\策略\管理模板\系统\登录\在用户登录时运行这些程序