我正在使用我的表单应用程序使用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 ()
感谢您的帮助!