我有几个独立的 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:
您可以在命令行(cmd 或 PowerShell)中执行命令帮助:
SCHTASKS /?
,获取有关特定子命令的帮助:SCHTASKS /Query /?
,或SCHTASKS /Create /?
,等等在源主机中列出您的任务
SCHTASKS /Query /FO CSV | clip
在这里,我将任务复制到剪贴板中,然后在文本编辑器中提取它们。我使用了:https://regexr.com/
,一个在线正则表达式实用程序。
- 通过任务列表,我构建了命令(使用电子表格是个好主意,具有“连接”功能)来提取 xml 文件中的定义:
请注意,/TN(任务名称)有文件夹名称,而文件名没有。
SCHTASKS /Query /XML /TN "\Replication\Delete Old Replication Logs" > "Delete Old Replication Logs.xml"
- 然后我将 xml 文件复制到目标主机,生成命令并在 xml 文件所在的以管理员权限打开的命令行控制台中执行它们。
SCHTASKS /Create /RU yourdomain\youruser /RP yourpassword /TN "\Replication\Delete Old Replication Logs" /XML "Delete Old Replication Logs.xml"
就是这样,这个方法对我有用,也许对其他人也有效。