监视远程cmd.exe进程的已完成状态

时间:2013-03-01 15:20:20

标签: c# .net wmi wmic tableau

我正在使用我的表单应用程序使用WMI发布仪表板,从计算机B运行计算机A中的.bat文件。 .bat文件多次调用命令行实用程序tabcmd.exe,实用程序更新日志文件位于以下位置的计算机A “C:\ Users [UserName] \ AppData \ Roaming \ Tableau \ tabcmd.log”

一旦在计算机A中完成该过程,我想用计算机B中的日志文件详细信息更新我的表单应用程序。 我使用下面的代码运行.bat文件,

        String path = @"C:\tabcmd.bat";
        String machineName = textBox1.Text;            
        var processToRun = new[] { path  };
        var connection = new ConnectionOptions();
        connection.Username = textBox3.Text;
        connection.Password = textBox2.Text;
        var wmiScope = new ManagementScope(String.Format("\\\\{0}\\root\\cimv2", machineName), connection);
        var wmiProcess = new ManagementClass(wmiScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
        wmiProcess.InvokeMethod("Create", processToRun);

此.bat文件基于动态数据源参数在计算机B中发布仪表板,因此.bat文件的运行时是不可预测的,在这种情况下,我如何确保运行.bat文件或更新日志文件是完成。

有没有办法按进程ID监控此进程?如果是这样,我可以在完成进程后读取日志文件。由于cmd.exe仍在目标计算机A中运行,因此以下内容对我没有帮助。

  System.Diagnostics.Process prc = System.Diagnostics.Process.GetProcessById(10100, "CHORRL0110")
  prc.WaitForExit ()

感谢您的帮助!

0 个答案:

没有答案