我通过使用我的表单应用程序使用 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 ()
谢谢你的帮助!