1

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 つのタスクしか返されません。タスク スケジューラ 1 とタスク スケジューラ 2 には違いがあることを理解しています。SO の他の場所も読んでいます。タスク スケジューラ マネージ ラッパー メソッドの一部は、タスク スケジューラ バージョン 1 では使用できないか、バージョン 2 のように機能しない可能性があります。これが動作の違いの理由であると推測しています。ただし、Web やドキュメントを調べたところ、バージョン 1 で機能するタスクを取得する方法を見つけるのに苦労しています。

どんな援助でも大歓迎です。

4

1 に答える 1