1

状況: ManagementBaseObject を使用してバッチ ファイルを実行し、その戻り値 (コマンドが正しく実行された場合は 0、問題が発生した場合は 1 など) を取得する必要があります。「EXIT」コマンドを使用してエラーレベル コードを設定しようとしましたが、終了コードとして何を入力しても、「returnValue」プロパティは常に 0 です。バッチ ファイルをそのプロパティに影響させる方法はありますか?
ここにコードがあります(バッチファイルを呼び出す代わりに、簡単なコマンドラインを実行してここに投稿しやすくしていますが、考え方は同じです):

ManagementClass processClass =  new ManagementClass("Win32_Process");
try
{
    ManagementBaseObject inp = processClass.GetMethodParameters("Create");
    inp["CommandLine"] = @"cmd /c exit /B 1";
    ManagementBaseObject outp;
    outp = processClass.InvokeMethod("Create", inp, null);
    Console.WriteLine(outp["returnValue"]);
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}

...しかし、出力は常に 0 です! 私が見たかったのは 1 です。これは、終了コードとして入れたものです。それは可能ですか?
Process クラスを使用して機能させることができることはわかっていますが、ManagementBaseObject を使用することが、リモート マシンでバッチ ファイルを実行する唯一の方法でした。

少し
説明すると、このバッチ ファイルはリモート マシンにあり、ローカル マシンからそのファイルを実行する必要があります。現在、クラス ManagementScope および ConnectionOptions を使用して、資格情報を提供するリモート マシンに接続しています。その後、ManagementPath を「Win32_Process」に設定して、リモート接続に関連付けられた ManagementClass を作成します。次に、ManagementBaseObject を使用してバッチ ファイルを実行し、その戻り値を取得します。
これを行う他の方法を誰かが知っている場合は、私に知らせてください。提案を受け付けています。
ありがとう!

4

0 に答える 0