我已经用 Google 搜索过,但尚未找到答案。
设想:我的一个 GPO 有一个启动脚本需要很长时间才能完成。出于某些原因,我们必须同步运行脚本。当然,这会导致启动时间变慢(有时长达 15 分钟!),之后才会出现登录屏幕。
在分析了作案者脚本后,我最终确定,需要很长时间才能完成的步骤不会影响后续 GPO 的结果。换句话说,那特定步骤(以及之后的所有步骤)可以在后台运行。
我的问题:启动脚本是否可以“触发”另一个将运行至完成的脚本/程序甚至当启动脚本退出时?也就是说,即使启动脚本的进程结束,启动脚本的“子进程”仍然继续存在?
附加信息:域控制器是 2008 和 2008 R2。工作站是 Windows XP。
答案1
抱歉没有早点回答(我自己的问题)。
所以,这就是我最终解决问题的方法。
启动时,启动脚本会创建一个at
作业。由于启动脚本以 SYSTEM 身份运行,因此该at
作业同样将在 SYSTEM 权限下运行。该at
作业配置为在创建后 2 分钟运行。
作业中的命令at
是实际的工作负载脚本。它会启动它应该执行的任何有效负载。由于它是作为计划作业启动的,因此它并不关心当时谁登录了。
瞧!任务完成了 :-)
答案2
假设启动脚本是一个批处理文件:
CALL 语句是在 MS-DOS 3.3 中引入的
它用于在批处理文件中调用其他批处理文件,而不会中止调用批处理文件的执行,并且对两个批处理文件使用相同的环境。
答案3
在之前的工作中,我曾遇到过类似的情况,我发现最好的解决方案是为要执行的脚本创建一个包装程序。登录脚本启动该程序,然后该程序以低优先级模式运行实际脚本。
这样用户就不会受到影响,因为脚本的执行速度会根据机器上运行的其他程序由操作系统自动调整。创建这样的包装器当然超出了本网站的范围。
答案4
仅出于选择的目的,您也可以尝试将脚本放在 GPO 中:
计算机配置\策略\管理模板\系统\登录\在用户登录时运行这些程序
或者
用户配置\策略\管理模板\系统\登录\在用户登录时运行这些程序
指定当用户登录系统时 Windows 自动启动的附加程序或文档。
要指定此设置的值,请单击“显示”。在“显示内容”对话框中的“值”列中,键入可执行程序 (.exe) 文件或文档文件的名称。要指定其他名称,请按 ENTER 并键入名称。除非文件位于 %Systemroot% 目录中,否则必须指定文件的完全限定路径。
注意:此设置出现在“计算机配置”和“用户配置”文件夹中。如果同时配置了这两个设置,系统将先启动“计算机配置”设置中指定的程序,然后再启动“用户配置”设置中指定的程序。
另请参阅“不处理旧版运行列表”和“不处理运行一次列表”设置。