我该如何让一组计算机上的 Powershell 脚本在计算机开启时全天定期运行?(我们已经使用了“启动时”或“登录时”,但有些计算机几天都没有登录。我们也不能使用常规的计划任务,因为这些脚本会将数据报告给服务器,我们不希望 300 台计算机同时访问服务器。我们还希望避免让脚本一直运行,并由脚本确定延迟,因为它有时会崩溃。)
有没有办法:
我猜想将其作为计划任务执行的一种方法是在脚本开始时随机延迟 0-5 分钟,但我们希望在测试时或在启动或登录时调用时避免这种延迟。
答案1
有没有办法在应用 GPO 时运行脚本?
是的。您可以创建一个计划任务,当特定事件发生时触发该任务:
在一次活动中
当特定事件条目添加到事件日志时,此触发器会导致任务运行。您可以选择指定基本事件触发器设置或自定义事件触发器设置。如果您选择基本事件触发器设置,则特定事件日志中的单个事件将触发任务。您可以选择包含事件的事件日志、事件发布者名称,并指定事件标识符。
来源触发器
触发器所需的 eventID 可能是 8006:
组策略服务保留 8000 至 8007 之间的事件 ID,以指示特定类型的组策略处理已成功完成。
答案2
看来,组策略管理编辑器,在计算机配置/首选项/控制面板设置/计划任务中,允许您创建一个“立即任务”,专门用于在 GPO 刷新后运行任务。
对于运行 Windows Server® 2012 或 Windows® 8 的计算机,“即时任务(至少为 Windows 7)”首选项(如果运行 Windows Server® 2008 R2 或 Windows® 7,则为“即时任务(Windows Vista 及更高版本)”首选项)允许您创建立即运行的任务,然后在每次刷新组策略时将其删除。“即时任务”首选项不提供操作或触发器的选择,因为它们总是创建一个任务,然后在运行后将其删除。
唯一的问题是我必须指定一个有效的用户才能以该用户身份运行(在本例中为“NT AUTHORITY\SYSTEM”),而且它完全按照我想要的方式工作。