远程计划任务状态

时间:2012-06-26 15:11:17

标签: c# .net scheduled-tasks psexec

对于我的应用程序我想监视远程服务器上特定计划任务的“状态”选项卡,并根据该状态执行操作。即,如果任务尚未运行,则运行任务等。

截至目前,我正在启动cmd.exe作为C#中的一个进程,psexec将该机器的schtasks转换为文本文件,读取该文本文件,然后执行相应的操作。

是否有更好的方法来执行此过程(获取schtask的特定状态),而不涉及第三方开源库?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用原生TaskService COM API:

//add reference to the 'Task Scheduler 1.1 Type Library'

using TaskScheduler;

//...

TaskSchedulerClass ts = new TaskSchedulerClass();
ts.Connect(remotehost, user, domain, password);
IRunningTaskCollection tasks = ts.GetRunningTasks(1);
foreach (IRunningTask task in tasks)
{
    Console.WriteLine(task.Name);
}

有关安全性和权限的某些任务,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/aa382140(v=vs.85).aspx

或者,如果powershell是一个可能更容易的选项,具体取决于版本。

答案 1 :(得分:-1)