【问题标题】:TaskScheduler To Find Tasks on a ServerTaskScheduler 在服务器上查找任务
【发布时间】:2020-05-03 14:07:33
【问题描述】:

我前几天问过这个问题,所以我真的为重新发布而道歉,但我需要尽快得到帮助。另一个帖子是How to check scheduled tasks on a sever using vb.net?。在线研究我发现了诸如 TaskScheduler、ServiceController 和 Task Scheduler Managed Wrapper 之类的类。但是,我还没有找到很好的例子来说明如何将它用于我需要的东西。如果有人可以提供帮助,我将不胜感激。

基本上我有一堆服务器,在这个 vb.net 程序中,我的一位同事让我需要添加实现以从下拉列表中选择一个服务器并找到该服务器正在运行的所有任务。所以我需要弄清楚的是如何使用这些任务调度程序类中的任何一个来输入服务器名称并返回任务列表。或者让一个枚举器遍历它们并从每个任务中提取信息,例如启用/禁用、运行与否等。

任何有关如何执行此操作的示例都将不胜感激。非常感谢。

【问题讨论】:

    标签: vb.net server scheduled-tasks taskscheduler


    【解决方案1】:

    这是一个很好的软件包:

    还有一个来自Wiki 的快速示例,可以帮助您入门:

    Private Sub EnumAllTasks()
      EnumFolderTasks(TaskService.Instance.RootFolder)
    End Sub
    
    Private Sub EnumFolderTasks(ByVal fld As TaskFolder)
      For Each task As Task In fld.Tasks
        ActOnTask(task)
      Next
    
      For Each sfld As TaskFolder In fld.SubFolders
        EnumFolderTasks(sfld)
      Next
    End Sub
    
    Private Sub ActOnTask(ByVal t As Task)
      ' Do something interesting here
    End Sub
    

    【讨论】:

    • 非常感谢您的回复。我环顾四周时看到了这一点,它看起来确实是完成任务的最好和最简单的方式。但是您知道如何从服务器名称中获取任务吗?那会在 EnumFolderTasks(TaskService.Instance.RootFolder) 行中吗?如果您能解释一下,我将不胜感激。
    • @FeenyFan123 ~ 您可以使用接受远程机器名称的TaskService 构造函数重载。 This example 并没有完全做到这一点,但您可以根据自己的需要进行调整。
    • 好的,非常感谢您的帮助,我一定会尝试一下。这让我绞尽脑汁。
    • @FeenyFan123 ~ 我知道那种感觉:-)