私のコード:
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.FileName = Environment.CurrentDirectory + @"\PsExec\PsExec.exe";
p.StartInfo.Arguments = @"\\server-0 cmd /c wmic process get description,executablepath";
p.Start();
string output = p.StandardOutput.ReadToEnd();
string errormessage = p.StandardError.ReadToEnd();
p.WaitForExit();
コンソール ウィンドウは閉じません。手動で閉じると、(出力に)次のように表示されます。
Description ExecutablePath
他に線が見えない!しかし、コンソールに同じことを書くと:
psexec \\server-0 cmd /c wmic process get description,executablepath
そうですか:
Description ExecutablePath
System Idle Process
System
smss.exe
csrss.exe C:\Windows\system32\csrss.exe
wininit.exe C:\Windows\system32\wininit.exe
csrss.exe C:\Windows\system32\csrss.exe
...
、Thread.Sleep(...)
行ごとの読み取り、、/ (呼び出されない)、-dフラグ(出力なし)、(機能しますが、コンソールウィンドウを非表示にできませんでした)...-accepteula
EnableRaisingEvents
OutputDataReceived
UseShellExecute=true
(上記の C# コードで) 最初の行しか受信しないのはなぜですか? コンソールに表示されるのと同じコンテンツを受け取るには、何を変更すればよいですか?
下手な英語でごめんなさい。回答ありがとうございます。