Назад | Перейти на главную страницу

Как импортировать несколько задач из XML в Windows Server 2008?

У меня есть все задачи с сервера в XML-файле, полученном с помощью

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

Теперь я хочу импортировать все задачи на другой сервер. Вся информация объясняет, как импортировать или создавать ОДНУ задачу за раз, но не несколько задач одновременно.

Это возможно? Или мне нужно разделить файл на несколько файлов атомарных задач?

Я написал этот код, чтобы разделить 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 импорт файла. Мне нужно импортировать файлы вручную (ненавижу, но у меня не было больше времени на решение проблемы)

Я считаю, что если вы хотите использовать schtasks, вам нужно сделать их атомарными. Я бы порекомендовал вам использовать командлет new-task в powershell, если вы хотите запланировать несколько задач (или просто хотите более детализированные параметры), см. PowerShellPack если у вас еще не установлен комплект ресурсов.