所以我写了一个C#控制台应用程序,它将东西吐到控制台(在我的例子中,是一些XML)。现在我正在使用PsExec从另一台机器调用该控制台应用程序;调用工作正常并以错误代码0退出(意味着成功),但是,我无法检索/查看由我的控制台应用程序写入命令行标准输出的输出。
我的电话看起来像:
"C:\Program Files\PSTools\psexec.exe"
<machineName>
-u <user>
-p <password>
"C:\..\..\consoleapp.exe"
-arg1 "value"
我注意到,当我运行它时,它会弹出第二个窗口,而不是psexec窗口(可能是我的控制台应用程序),它可以非常快速地打开和关闭。我已经尝试添加-i标志,2&gt;&amp; 1,&gt;&gt; C:output.txt和&gt; C:\ output.txt重定向,没有一个让我的控制台应用输出显示在原始控制台窗口[其中包含psexec],也不将我的控制台应用输出转储到文件。
这是一个中间目标但是,我正在尝试将此输出重定向到System.Diagnostics.Process对象,该对象仅设法将psexec输出重定向到stderror(即“PSexec连接到...退出时代码0“)。 stdout是空白的,我想包含我的控制台应用程序输出。
有什么建议吗?
答案 0 :(得分:1)
听起来你需要某种进程间通信。实现这一目标的一种方法是创建命名管道。看看这篇文章,也许它会指向你的方向。
http://www.switchonthecode.com/tutorials/interprocess-communication-using-named-pipes-in-csharp