このトピックに関する以前の質問のいずれも、この問題に対する回答を提供しているとは思いません。psexec を使用してリモート exe ファイルを実行します。コマンドラインで実行すると、exeファイルの出力が得られます。psexec.exe \\machine C:\somename.exe
.
C Sharp Process Execution を使用すると、ハングするか、出力がリダイレクトされません。一部のexeではタイムアウトになり、一部のリダイレクトされた標準出力では空になり、エラーにはコード0で終了したExeが含まれます。出力をキャプチャする方法はありますか?
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName =GetPsExecPath();
startInfo.Arguments = arguments;
Debug.WriteLine(arguments);
startInfo.UseShellExecute = false;
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
Process process = new Process();
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
error = process.StandardError.ReadToEnd();
output = process.StandardOutput.ReadToEnd();
Debug.WriteLine(error);
Debug.WriteLine(output);
process.close();
編集: Soln したがって、この問題は主に、Psexec が他の多くのものを stderr にスローするため、それらを読み取る順序が原因であり、ReadToEnd() を使用するとデッドロックにつながる可能性があります。したがって、BeginOutputReadLine を使用すると、魅力的に機能します。