我想在域中的任何计算机发生事件时触发操作/任务。
这可以通过 GPO 实现吗?我是否需要将脚本部署到域中的所有机器?
答案1
您正在谈论任务计划程序中的基于事件的任务。
是的,可以通过 GPO 部署它们。它们需要 Vista 或更高版本。您将需要使用 GPP(组策略首选项)。
在组策略管理控制台 (gpmc.msc) 中,编辑或创建 GPO,导航到计算机设置>优先>控制面板设置>计划任务 创建一个新的计划任务(Windows Vista 及更高版本)
在这里,您可以像在普通任务计划程序中一样创建基于事件的计划任务。关键部分是在“触发器”选项卡上选择正确的触发器类型。您应该创建一个触发器并将其设置为开始任务:在某项活动中并选择要触发的事件。
您还需要确保计算机可以访问该脚本。要么通过在网络上的某个位置共享它,要么将其复制到客户端上的本地磁盘,也许可以使用同一 GPO 中的 GPP 文件功能。
编辑:我刚刚意识到这个问题真的很老了,可能不再相关了。它只是由 HopelessN00b 更新的
答案2
嗯,您不能拥有由事件触发的 GPO。GPO 基本上只是注册表项,因此它们要么是一个值,要么是另一个值。因此,您需要一个可以在事件出现时触发的脚本(某种类型)。
我能想到几种方法可以做到这一点,而不需要大量可怕的手动复制。
第一种方法是通过 GPO 部署脚本,最好的选择可能是启动脚本(因此它以
SYSTEM
登录用户的身份运行并且不需要运行)监视事件日志,然后在发生此事件时执行您需要做的任何事。第二种方式和第一种类似,是通过GPP部署计划任务,您的任务就是所讨论的脚本。您可以将计划任务设置为始终运行,或者按一定间隔(例如,每 5 分钟)运行,并在启动时扫描事件日志。
第三种方法,我可能更喜欢,只要我能让硬件支持,那就是设置一个中央服务器来收集转发的事件日志,并配置域计算机将您关注的事件转发到此日志服务器。
这样,您只需在一台计算机上运行脚本,并且只需担心那一台计算机,而不必确保它在多台计算机上运行。
这样做还可以通过事件日志将任务附加到事件,这是一个比让脚本扫描事件日志更强大的选项。 Technet 甚至有一篇博客文章介绍如何触发 PowerShell 脚本来响应事件,非常漂亮。
- 可能有一种方法可以通过 GPO 部署这些“附加到事件”的东西,但我找不到简单的方法,而且考虑到我偏爱日志集中化,我对此并不感兴趣。