0

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

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

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

我使用 C# 使用 Process 这样的..

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 回答 0