2014-09-30 53 views
1

我用Process类执行与自己的输出这样的远程命令运行PSEXEC微软工具它自己的输出列出了远程机器上所有安装的应用程序。 所以,在输出我看不到输出wmic,同时当我在本地运行PSExec的命令行时,我可以完全看到两个PSExec的输出和远程WMIC的启动。 问题是,我如何捕获本地机器上的所有输出?我应该在单独的控制台中运行它并尝试附加到控制台以捕获所有输出吗?.NET控制台输出和PSEXEC

更一般地说,如果说明白,为什么输出过程中StandardOutput和控制台在运行PSExec时直接不一样?

+2

如果你不知道WMI可以全部由自己连接到远程计算机(/节点) – 2014-09-30 12:24:58

+0

是的,但在我的情况下,我不依赖远程WMI,因为它有限制。 – Centro 2014-09-30 12:26:52

+0

'ReadToEnd'将等待进程退出。例如psExecFile中的'Console.ReadLine()'可能会阻止您的阅读。 – 2014-09-30 12:36:19

回答

0

ReadToEnd将等待处理退出。例如psExecFile中的Console.ReadLine()可能会阻止您的阅读。但你可以得到的已经写入流,

  StreamReader output = p.StandardOutput; 
      string line; 
      while ((line = output.ReadLine()) != null) 
      { 
       Console.WriteLine(line); 
      } 
+0

当输入流结束时,'output.ReadLine()'为null。 – 2014-09-30 12:45:49

0

在控制台中,同时写入StandardOutputStandardError数据显示在控制台中。

在你的程序,你需要在每一个看个别...尝试在末尾添加这样的事情:

string error = p.StandardError.ReadToEnd();