1

そこで、コンソールに情報を吐き出す C# コンソール アプリを作成しました (私の場合は XML)。ここで、PsExec を使用して別のマシンからそのコンソール アプリを呼び出しています。呼び出しは正常に機能し、エラー コード 0 (成功を意味します) で終了しますが、コンソール アプリによってコマンド ラインの標準出力に書き込まれた出力を取得/表示できません。

私の呼び出しは次のようになります。

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

これを実行すると、非常に高速に開閉する psexec ウィンドウ (おそらく私のコンソール アプリ) 以外の 2 つ目のウィンドウが開くことに気付きました。-i フラグ、2>&1、>>C:output.txt、および >C:\output.txt リダイレクトを追加しようとしましたが、コンソール アプリの出力を元のコンソール ウィンドウに表示するものはありません [つまり、その中の psexec]、コンソール アプリの出力をファイルにダンプすることもありません。

これは中間的な目標ですが、この出力を System.Diagnostics.Process オブジェクトにリダイレクトしようとしています。これは、psexec 出力のみを stderror にリダイレクトすることしかできませんでした (つまり、「PSexec 接続先... コード 0 で終了しました」)。 )。stdout は空白です。コンソール アプリの出力を含めたいと思います。

助言がありますか?

4

1 に答える 1

1

ある種のプロセス間通信が必要なようです。これを実現する 1 つの方法は、名前付きパイプを作成することです。この記事を見てください。多分それはあなたの後の方向にあなたを向けるでしょう.

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

于 2011-01-31T22:01:10.930 に答える