如何在 Windows Server 2008 中从 XML 导入多个任务?

如何在 Windows Server 2008 中从 XML 导入多个任务?

我将使用以下方法获取的 XML 文件中来自服务器的所有任务

schtasks /Query /XML ONE>C:\schedtasksBackup.xml

现在,我想导入另一台服务器中的所有任务。所有信息都解释了如何导入或一次创建一个任务,但不能同时导入多个任务。

可能吗?还是我需要将文件拆分为多个原子任务文件?

答案1

我认为,如果您想使用 schtasks,则需要使它们具有原子性。如果您想要安排多个任务(或者只是想要更精细的选项),我建议您在 powershell 中使用 new-task cmdlet,请参阅PowerShell包如果您尚未安装资源工具包。

答案2

我编写了此代码来拆分 xml 并逐个导入任务:

var taskXML = new XmlDocument();
taskXML.Load(@"d:\temp\schedtasksBackup.xml");
var batbody = new StringBuilder();

XmlNodeList tasks = taskXML.DocumentElement.GetElementsByTagName("Task");

string strFileName = "d:\\temp\\Task";

for (int i = 0; i < tasks.Count; i++) {
    string onetaskXML = tasks[i].OuterXml;

    //Create the New File. With a little more extra effort
    //you can get the name from a comment above the task
    XmlWriter xw = XmlWriter.Create(strFileName + "_" + (i+1) + ".xml");
    batbody.AppendLine(string.Format("schtasks.exe /create /TN \"{0}\" /XML \"{1}\"", "Task " + (i+1) + " Name", strFileName + "_" + (i+1) + ".xml"));

    //Write the XML
    xw.WriteRaw(onetaskXML.ToString());
    xw.Close();

    // Write a bat to import all the tasks
    var batfile = new System.IO.StreamWriter("d:\\temp\\importAllTasks.bat");
    batfile.WriteLine(batbody.ToString());
    batfile.Close();

}

编辑:但是,这并不容易。我找不到原因,但schtasks.exe给出了malformed XML error导入文件的方法。我必须手动导入文件(讨厌它,但没有更多时间花在这个问题上)

相关内容