使用 GPO 运行一次批处理文件

使用 GPO 运行一次批处理文件

我是否可以为新安装的计算机设置一个 GPO 列表,其中包含许多批处理文件(主要是文件移动),并且这些文件只运行一次并且不再运行?

我是这方面的新手,还没有找到任何好的解决方案。每一份帮助都很重要:) 谢谢

答案1

注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce是放置您只想运行一次的项目的最自然的地方,因为命令运行时会从此列表中删除。但是,使用组策略首选项编辑注册表可能有些麻烦。

您还可以使用组策略首选项来部署立即(计划)任务,该任务运行一次然后被删除。立即任务就像标准计划任务一样,因此可以在一个任务中运行多个操作。有一个名为“应用一次,不再应用”的复选框,强制它只能应用(因此存在)一次。


配置注册表项:http://technet.microsoft.com/en-us/library/cc753092.aspx

配置即时任务:http://technet.microsoft.com/en-us/library/dd851779.aspx


补充说明

这仅适用于 Windows Vista 及以上版本的客户端版本,以及具有GPP 客户端扩展补丁已安装。我强烈建议使用它。

答案2

我将这种东西称为“陷阱门” GPO,并且我经常这样做(例如在新加入域的计算机上工作)。如果我有脚本想要在客户端上执行一次且仅一次,我通常会这样做:

  • 在 AD“Trapdoor Script Already Executed”中创建一个组,并授予“域计算机”权限,允许他们进行“所有验证的写入”和“写入成员”(特定于属性的权限)。

  • net group "Trapdoor Script Already Executed" /domain /add %computername%$创建我的启动脚本并在脚本末尾添加

  • 创建一个引用我的启动脚本的 GPO,并将权限“Trapdoor 脚本已执行”/“拒绝应用组策略”添加到 GPO。

这会导致机器在执行脚本后将自己添加到“Trapdoor 脚本已执行”组中,并且在将来启动时它们将被拒绝再次执行该脚本的权限。

编辑:

当客户端计算机没有从组中删除但被重新加工或改变用途并需要再次运行“陷门”脚本时,此策略的效果非常差。

在这些情况下,我选择将“金丝雀”值写入注册表,脚本可以简单地检查该值REG QUERY,如果找到该值,则放弃errorlevel。这样做的缺点是脚本在每次启动时都会执行(而通过组成员身份限制 GPO 应用程序可以防止脚本在每次启动时执行,并花费时间)。理论上,您可以使用 WMI 过滤根据注册表值定位 GPO,但在过去,基于注册表值的 WMI 过滤的性能可怕

当我能让技术人员删除计算机从 AD 中删除,并在“重新处理”它们时重新加入它们,而不是只保留计算机对象及其组成员身份。这是一个挑战,但我能想出的唯一方法不会在每次启动时导致脚本执行惩罚。

答案3

请先阅读本文满的。

注1:下载并安装GPMC和

注 2:另一个仅在 Windows 8 中有用的答案如下:导入和导出入门 GPO

相关内容