对于我的应用程序,我想监视远程服务器上特定计划任务的“状态”选项卡,并根据该状态执行操作。即,如果任务尚未运行,则运行任务等。
截至目前,我正在将 cmd.exe 作为 C# 中的进程启动,将该机器的 schtask psexec'ing 到一个文本文件中,读取该文本文件,然后执行相应的操作。
是否有更好的方法来执行此过程(获取 schtask 的特定状态)而不涉及 3rd 方开源库?
对于我的应用程序,我想监视远程服务器上特定计划任务的“状态”选项卡,并根据该状态执行操作。即,如果任务尚未运行,则运行任务等。
截至目前,我正在将 cmd.exe 作为 C# 中的进程启动,将该机器的 schtask psexec'ing 到一个文本文件中,读取该文本文件,然后执行相应的操作。
是否有更好的方法来执行此过程(获取 schtask 的特定状态)而不涉及 3rd 方开源库?
您可以尝试使用本机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 是一个可能更容易的选项,具体取决于版本。