我用Process类运行PSEXEC微软工具执行与自己类似这样的输出远程命令:
Process p = new Process();
string args = @"\\remotemachine -u someuser -p somepass wmic product get name";
ProcessStartInfo ps = new ProcessStartInfo();
ps.Arguments = args;
ps.FileName = psExecFileName;
ps.UseShellExecute = false;
ps.CreateNoWindow = true;
ps.RedirectStandardOutput = true;
ps.RedirectStandardError = true;
p.StartInfo = ps;
p.Start();
StreamReader output = p.StandardOutput;
string output = output.ReadToEnd();
其中WMIC产品获取命名与它自己的输出列出远程计算机上的所有安装的应用程序远程运行WMI工具。 所以,在输出我没有看到WMIC的输出,在当我在命令行中运行PSEXEC本地的同时,我可以完全看到两个PSEXEC的输出和远程启动WMIC。 问题是,我怎么能捕获所有的本地机器上的输出? 我应该在一个单独的控制台运行它,并尝试连接到控制台来捕获所有的输出?
更一般地,如果把说白了,为什么在这个过程中StandardOutput并在控制台上运行PSEXEC时,直接不一样的输出?