无论如何,我可以从C#中的PsExec获得所需的退出值吗?

时间:2014-09-25 15:51:05

标签: c# batch-file psexec errorlevel

这是我目前用于使用psExec进行远程安装的命令。

psExec \\ MyRemoteComputer -s -c MyInstallationFile.exe / q

当我在命令提示符窗口中发出此命令时,它可以正常工作。如果无法访问MyRemoteComputer,则返回错误。之后,当我用“echo%errorlevel%”检查退出代码时,它返回53,这是正确的退出代码。

我用C#编写了这样的过程..

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = ".....psExec.exe";
startInfo.WorkingDirectory = ".....";
startInfo.Arguments = @"\\MyRemoteComputer -s -c MyInstallationFile.exe /q";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.CreateNoWindow = true;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
Process proc = Process.Start(startInfo);
....
proc.WaitForExit();
Console.WriteLine(proc.ExitCode);

它运行正常..但是当我检查ExitCode时(显然,当无法访问myRemoteComputer时),它是6,不是53。 它有意义,为什么会发生这种情况,但有什么方法可以检索53值,而不是6?

我尝试了几件事......

  1. cmd / c psExec.exe ....
  2. 创建了一个批处理文件,然后输出%errorlevel%作为该批处理文件中的文件...然后我在我的ProcessStartInfo中使用了这个批处理文件....
  3. Environment.GetEnvironmentVariable
  4. 他们都没有工作......我无法在代码中获得所需的返回值... 真的没办法检索我想要的值吗?

    提前致谢。

0 个答案:

没有答案