我目前正在开发一个应用程序,用于检查 IIS 服务器上是否存在具有特定名称的 APP。我使用 PsExec 来执行这个命令。
当我通过命令行对此进行测试时,我注意到当应用程序不存在时,appcmd 以 ExitCode 1 退出。同样,当应用程序存在时,它以 0 退出。
我也想使用这种行为,所以我不需要进行输出重定向。我只关心APP是否存在。PsExec 使用它调用的命令的退出代码作为它自己的退出代码。我用命令行尝试了这个并检查了结果,echo %errorlevel%
它工作得很好。
但是我遇到了以下代码的问题。
Process process = new Process();
process.StartInfo.FileName = @"psexec";
string appcmd = @"C:\windows\system32\inetsrv\appcmd";
process.StartInfo.Arguments = String.Format(@"{0} -u {1} -p {2} -S {3} LIST APP ""{4}""",
ip, username, password, appcmd, appname);
process.Start();
process.WaitForExit();
Console.WriteLine(process.ExitCode);
这执行得很好。但它不会返回 PsExec(应该?)给出的退出代码。它总是返回0。所以现在我不能使用我之前发现的技巧来检查一个APP是否存在。
我有一个已知的解决方案吗?有没有类似的解决方案?还是我应该使用输出重定向?