我正在使用Task Scheduler Managed Wrapper从服务器获取预定任务信息。这是我的代码,我几乎从文档中收集了这些代码:
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之间存在差异。我还在其他地方阅读因此,任务调度程序版本1可能无法使用某些任务调度程序托管包装器方法,或者不能像版本2那样工作。我猜这是导致行为差异的原因。但是,我查看了网络和文档,我很难找到哪种方法可以使任务适用于版本1.
非常感谢任何帮助。
答案 0 :(得分:0)
我终于能够将应用程序移动到Windows 2008服务器,并且代码运行得非常好。