我正在使用任务计划程序托管包装器从服务器获取计划任务信息。这是我的代码,我几乎从文档中收集了这些代码:
public List<ScheduledTask> GetScheduledTasks()
{
using (TaskService ts = new TaskService("SERVERNAME", "userId", "domain", "password"))
{
foreach (var scheduledTask in ScheduledTasksToGet)
{
var task = ts.FindTask(scheduledTaskName);
var taskScheduled = new ScheduledTask();
taskScheduled.Name = task.Name;
taskScheduled.LastRunTime = task.LastRunTime;
taskScheduled.LastRunResult = task.LastTaskResult;
scheduledTasks.Add(taskScheduled);
}
}
return scheduledTasks;
}
我尝试从中检索任务信息的服务器是 2008 R2 服务器。我已经确认我要检索的所有任务都在根文件夹中。当我在我的 Windows 7 机器上本地运行此代码时,它运行良好。但是,当我将应用程序部署到我们的 2003 SP2 QA 服务器时,我无法检索任何任务。我也试过这段代码:
public List<ScheduledTask> GetScheduledTasks()
{
using (TaskService ts = new TaskService("SERVERNAME", "userId", "domain", "password"))
{
EnumerateFolderTasks(ts.RootFolder, tasks);
foreach (var task in tasks)
{
if (ScheduledTasksToGet.Any(t => task.Name.StartsWith(t)))
{
var scheduledTask = new ScheduledTask();
scheduledTask.Name = task.Name;
scheduledTask.LastRunTime = task.LastRunTime;
scheduledTask.LastRunResult = task.LastTaskResult;
scheduledTasks.Add(scheduledTask);
}
}
}
}
private void EnumerateFolderTasks(TaskFolder folder, List<Microsoft.Win32.TaskScheduler.Task> tasks)
{
foreach (Microsoft.Win32.TaskScheduler.Task task in folder.Tasks)
tasks.Add(task);
foreach (TaskFolder subFolder in folder.SubFolders)
EnumerateFolderTasks(subFolder, tasks);
}
同样,这段代码在本地运行良好,但在服务器上,当我期待 10 时,我只返回一个任务。我知道任务计划程序 1 和任务计划程序 2 之间存在差异。我还在其他地方读到了 SO某些任务计划程序托管包装器方法可能不适用于任务计划程序版本 1,或者无法像版本 2 那样工作。我猜这就是行为差异的原因。但是,我查看了网络和文档,我很难找到哪种方法可以用于版本 1。
任何帮助将不胜感激。