登录脚本是同时运行还是连续运行?

登录脚本是同时运行还是连续运行?

通过组策略设置(用户配置\Windows 设置\脚本(登录/注销))是Logon Scripts同时运行还是一个接一个地运行?

我之所以问这个问题是因为我不确定是最好有一个包含我所有需要的操作的较大的脚本,还是几个较小的脚本。

TechNet 文档告诉您如何设置它们,但没有告诉您如何运行它们。

答案1

登录脚本同时运行。

您链接到的文档建议脚本按“[...] 顺序处理”连续运行:

如果您分配了多个脚本,则将按照您指定的顺序处理这些脚本。要在列表中上移脚本,请单击该脚本,然后单击向上要在列表中向下移动脚本,请单击它,然后单击向下

文档没有明确说明“按 [...] 顺序处理”的含义,因此我做了一个小测试。我编写了两个脚本,分别记录一个事件、休眠五秒钟、记录另一个事件并退出:

Set sh = WScript.CreateObject("WScript.Shell")
sh.LogEvent INFORMATION, "Hello from Script A"
WScript.Sleep 5000
sh.LogEvent INFORMATION, "Goodbye from Script A"

除了日志消息显示的是“脚本 B”之外,其他脚本都完全相同。

我将这两个脚本作为登录脚本放在 GPO 上并应用了该 GPO。刷新策略并登录到测试计算机后,我检查了事件查看器。

结果是记录了“Hello from Script A”和“Hello from Script B”同时五秒钟后,记录了“脚本 A 再见”和“脚本 B 再见”同时

确切地说,日志条目是在同一秒内添加的,这些条目的时间分辨率不会达到几分之一秒,所以我不确定哪个脚本首先写入日志。事件查看器实际上显示了脚本 B 的日志来自脚本 A 的日志,即使时间戳相同。

这个简单测试的结论是:

登录脚本同时运行。

答案2

虽然 .bat 和 .vbs 登录脚本可以同时运行,但 .ps1 powershell 登录脚本却不能。如果您有两个包含“sleep 120”的登录脚本,您可以在 rsop.msc 中看到一个脚本等待另一个脚本完成。或者您可以使用 powershell“get-wmiobject win32_process”检查正在运行的命令行。

相关内容