4

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

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

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

4

2 回答 2

1

您可以尝试使用本机TaskServiceCOM 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 是一个可能更容易的选项,具体取决于版本。

于 2014-03-26T02:30:21.867 回答