简体   繁体   中英

Process.Start does not output the full output

I have a process P, which calls the PSEXEC executable, and passes it an argument. My issue is that the output from my C# program is not the same from when I call exactly the same command directly into a command prompt.

Here is the output I expect (when ran from CMD):

Server Name           Server Load
--------------------  ------------
601CTXD04             0
601CTXD05             0
...
601CTXP03             0

And here is the actual output (when ran from my program):

Server Name           Server Load
--------------------  ------------
601CTXD04             0

So when I run the command from my C# program, I only get 1 server. I call the process the following way :

p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.FileName = cServer.psexec; //Path to the PSEXEC executable
p.StartInfo.Arguments = "-accepteula \\\\601ctxp01 qfarm /load /continue";
p.Start();

string output = p.StandardOutput.ReadToEnd();
string[] lines = Regex.Split(output, "\\r\\n");

I really do not understand why, the exact same command ran from CMD does not give the same output when ran from a C# process. Please let me know what I am doing wrong as I am currently oblivious to my mistake.

似乎问题出在PsExec本身(Sysinternal实用程序)上,因为我尝试了一种名为PAExec的替代方法,并且同一命令运行正常,所以我在我的代码中改用了该命令。

You need to call p.WaitForExit() after p.StandardOutput.ReadToEnd() , otherwise you won't get all of the output from the process. Don't put it directly after p.Start() - you may get a deadlock. See http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput%28v=vs.110%29.aspx

Be sure to have the.

p.WaitForExit() 

method after the line where you read the output. Here is an explanation from MSDN: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput(v=vs.110).aspx

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM