1

因此,我编写了一个 C# 控制台应用程序,将内容吐到控制台(在我的例子中是一些 XML)。现在我正在使用 PsExec 从另一台机器调用该控制台应用程序;调用工作正常并以错误代码 0(表示成功)退出,但是,我无法检索/查看控制台应用程序写入命令行标准输出的输出。

我的电话看起来像:

"C:\Program Files\PSTools\psexec.exe"
    <machineName>
    -u <user>
    -p <password>
    "C:\..\..\consoleapp.exe"
    -arg1 "value"

我注意到,当我运行它时,它会弹出第二个窗口,而不是 psexec 窗口(大概是我的控制台应用程序),它打开和关闭的速度非常快。我尝试添加 -i 标志、2>&1、>>C:output.txt 和 >C:\output.txt 重定向,这些重定向都没有让我的控制台应用程序输出出现在原始控制台窗口中 [有psexec],也不会将我的控制台应用程序输出转储到文件中。

这是一个中间目标,但是,我正在尝试将此输出重定向到 System.Diagnostics.Process 对象,该对象仅设法将 psexec 输出重定向到 stderror(即“PSexec 连接到...退出,代码为 0” )。标准输出是空白的,我想包含我的控制台应用程序输出。

有什么建议么?

4

1 回答 1

1

听起来您需要某种进程间通信。实现这一目标的一种方法是创建命名管道。看看这篇文章,也许它会为你指明你之后的方向。

http://www.switchonthecode.com/tutorials/interprocess-communication-using-named-pipes-in-csharp

于 2011-01-31T22:01:10.930 回答