小编Mic*_* K.的帖子

使用C#捕获执行plink的cmd的所有(stdout,stderr和CON)输出(std out + err ok,CON not working)

我想通过打开一个进程并运行plink来打开来自c#的SSH连接.应收集所有输出,并根据结果,程序将触发对ssh的操作.我的大问题是,我正在使用一对,如果不同的脚本,我需要(自动)用户交互.因此,我必须捕获所有输出数据(标准输出,标准错误和CONSOLE).

查看以下测试批次应该使案例更加清晰:

1: @ECHO OFF
2: ECHO StdOut
3: ECHO StdErr 1>&2
4: ECHO Cons>CON
Run Code Online (Sandbox Code Playgroud)

代码如下:

Process process;
Process process;
process = new Process();
process.StartInfo.FileName = @"cmd.exe";
process.StartInfo.Arguments = "/c test.bat";
process.StartInfo.UseShellExecute = false;
process.StartInfo.ErrorDialog = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardInput = true;
process.Start();
process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
process.ErrorDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
process.BeginOutputReadLine();
process.BeginErrorReadLine();
StreamWriter inputWriter = process.StandardInput;
[...]
Run Code Online (Sandbox Code Playgroud)

我能够捕获2 + 3行,但不能捕获4行(某些程序使用).我也试过powershell(或直接plink)而不是cmd.exe作为起点,但结果相同.

在c#中是否有任何方法可以捕获控制台,或者您是否知道任何第三方命令行能够将CON重定向到stdout或类似的东西?

c# shell console redirect capture

7
推荐指数
2
解决办法
3745
查看次数

标签 统计

c# ×1

capture ×1

console ×1

redirect ×1

shell ×1