我目前正在尝试编写一个运行plink的函数,并捕获该进程的输出。当我尝试使用StandardOutput时,我什么都没得到,当我尝试使用StandardError时,我得到“无法读取标准输入:句柄无效。”我只能假设这意味着当plink正在等待输入时我正在尝试阅读。我也通过一个名为apCommands.txt的文本文件传递我的命令。当我手动运行此命令它工作并给我所需的输出,我只是无法弄清楚为什么我不能重定向该输出,所以我可以将它存储在结果文件中。这是我现在的代码。
string pArgs = "-m \"" + ABSPATH + "\\apCommands.txt\" -ssh myHost -l user -pw password";
string output;
if (File.Exists(ABSPATH + "\\apTest.txt"))
File.Delete(ABSPATH + "\\apTest.txt");
StreamWriter apTest = new StreamWriter(ABSPATH + "\\apTest.txt");
Process runAP = new Process();
ProcessStartInfo apInfoStart = new ProcessStartInfo(ABSPATH + "\\plink.exe");
apInfoStart.Arguments = pArgs;
apInfoStart.RedirectStandardOutput = true;
apInfoStart.CreateNoWindow = true;
apInfoStart.UseShellExecute = false;
runAP.StartInfo = apInfoStart;
runAP.Start();
output = runAP.StandardOutput.ReadToEnd();
runAP.WaitForExit();
apTest.WriteLine("Standard Output");
apTest.WriteLine(output);
apTest.Close();
runAP.Close();
谢谢,