我们有一个由大约 70 台 Windows 计算机(XP 和 7)组成的小域。我们希望安排一个命令(一种更新机制)定期在所有计算机上运行,并且我们希望无论计算机是否连接到我们的网络,该任务都可以运行(即即使在未连接到我们的 VPN 的笔记本电脑上也应该运行该任务)。
我们有一个 Microsoft System Center Essentials 2010 服务器,因此它可能对此有用(我们不确定它提供的功能范围)。
我看到的选项如下:
- 完全手动操作。手动或使用 psexec(和命令
at
?)远程安装网络中每台计算机的计划任务。强制要求新映像的计算机在部署给员工之前安装此任务,或者任务应在映像中。初始成本高(必须为 70 台计算机中的每台计算机执行此操作),但将其构建到映像中可能会有效……但需要进行一些维护,以确保将任务添加到所有计算机中。我担心一两年后,我们会忘记它,或者变得马虎,或者有新的 IT 员工错过这一步,一些计算机将无法执行任务。 - 让我们的一台服务器运行一个脚本,该脚本循环遍历所有计算机,并在网络中的每台计算机上执行 psexec 命令 - 它只会在正在运行且连接的计算机上运行,因此此解决方案不起作用。我怀疑 SCE 也可以做类似的事情,但这也不是一个好的解决方案。
这两种方法都不理想,而且我确信有更好的方法可以做到这一点——对吗?完成这项任务的最佳方法是什么?
答案1
您可以创建一个基于计算机的首选项策略,其中包含要运行的适当命令行的计划任务。首选项策略是 Windows 2008 引入的一项新功能。使用首选项策略,您可以创建将通过 GPO 推送的计划任务,并且可以集中管理设置。
如果您希望它应用于所有计算机,只需将其链接到适当的 OU,并确保安全过滤针对域计算机(我还关闭了 GPO 本身的基于用户的设置)。
答案2
我会编写一个启动脚本,使用该schtasks.exe
工具来操作目标计算机上的计划任务。Microsoft 可以给你一些使用信息对于该工具来说,但它确实相当容易使用。您也可以在 Server Fault 上找到一些关于它的很好的讨论。我会使用脚本来检查任务是否存在,如果不存在,则创建它。
首先在 PC 上的提升命令提示符下编写一个可执行所需操作的脚本。一旦它正常工作,将其作为启动脚本分配给几台测试计算机,看看它是否仍能执行所需操作。