这是我目前使用 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?
我尝试了几件事..
- cmd /c psExec.exe ....
- 创建了一个批处理文件,然后将 %errorlevel% 作为该批处理文件中的文件输出......然后我在我的 ProcessStartInfo 中使用了这个批处理文件......
- Environment.GetEnvironmentVariable
他们都没有工作......我无法在代码中得到我想要的返回值......真的没有办法检索我想要的值??
提前致谢。