如何在 Windows Server 2008 机器之间复制多个计划任务?

如何在 Windows Server 2008 机器之间复制多个计划任务?

我有几个独立的 Win2008 (R1+R2) 服务器(没有域),每个服务器都有几十个计划任务。每次我们设置一个新服务器时,都必须在其上创建所有这些任务。

这些任务并不位于“任务计划程序库”的“根”中,而是位于子文件夹中,深度最多为两级。

我知道我可以使用 schtasks.exe 将任务导出到 xml 文件,然后使用:

schtasks.exe /CREATE /XML ...' 

将它们导入到新服务器上。问题是 schtasks.exe在根目录中创建它们,而不是它们所属的子文件夹。在 GUI 中也没有办法移动任务。

有没有一种工具可以让我集中管理所有任务,并允许我在多台机器上的文件夹中创建它们?它还可以更轻松地设置“执行用户和密码”。

答案1

由于这里没有人有答案,所以我坐下来写了一个小程序我。

它将现有任务导入数据库。然后,您可以将数据库复制到另一台计算机,并在新计算机上的相同文件夹结构中创建所有任务。

您还可以使用它来重命名任务,将它们移动到不同的文件夹或单击删除多个任务。

它需要.NET 4 和 Vista 或更新版本。

答案2

当您使用指定任务名称时,schtasks.exe您可以添加任何您想要用来组织它们的文件夹。

Schtasks.exe /create /xml taskname.xml /TN folder1\taskname

将创建文件夹1,然后taskname在其中创建。

它不能帮助您移动已创建的任务,但它可以帮助您管理新的任务。

答案3

这是我执行此操作的方式,使用命令 SCHTASKS.exe:

  1. 您可以在命令行(cmd 或 PowerShell)中执行命令帮助:SCHTASKS /?,获取有关特定子命令的帮助:SCHTASKS /Query /?,或SCHTASKS /Create /?,等等

  2. 在源主机中列出您的任务

SCHTASKS /Query /FO CSV | clip

在这里,我将任务复制到剪贴板中,然后在文本编辑器中提取它们。我使用了:https://regexr.com/,一个在线正则表达式实用程序。

  1. 通过任务列表,我构建了命令(使用电子表格是个好主意,具有“连接”功能)来提取 xml 文件中的定义:

请注意,/TN(任务名称)有文件夹名称,而文件名没有。

SCHTASKS /Query /XML /TN "\Replication\Delete Old Replication Logs" > "Delete Old Replication Logs.xml"

  1. 然后我将 xml 文件复制到目标主机,生成命令并在 xml 文件所在的以管理员​​权限打开的命令行控制台中执行它们。

SCHTASKS /Create /RU yourdomain\youruser /RP yourpassword /TN "\Replication\Delete Old Replication Logs" /XML "Delete Old Replication Logs.xml"

就是这样,这个方法对我有用,也许对其他人也有效。

相关内容