1

我正在使用任务计划程序托管包装器从服务器获取计划任务信息。这是我的代码,我几乎从文档中收集了这些代码:

    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。

任何帮助将不胜感激。

4

1 回答 1

0

我终于能够将应用程序移至 Windows 2008 服务器,并且代码运行良好。

于 2013-08-08T11:36:26.287 回答