1

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 ファイルの実行時間は予測できません。

このプロセスをプロセス ID で監視する方法はありますか? もしそうなら、プロセスが完了したらログファイルを読むことができます。cmd.exeはターゲットコンピューターAでまだ実行されているため、以下はこの状況では役に立ちません.

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

ご協力いただきありがとうございます!

4

0 に答える 0