0

我目前正在开发一个应用程序,用于检查 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是否存在。

我有一个已知的解决方案吗?有没有类似的解决方案?还是我应该使用输出重定向?

4

1 回答 1

0

不是真正解决问题的方法。但是因为 IIS 中的 Web 应用程序必须有一个唯一的名称,所以创建一个已经存在的应用程序会导致错误,但不会有任何改变。

这意味着如果我总是尝试创建一个新的 APP,它可以正常工作。如果它不存在,它将被制造,如果它已经存在,则不会发生任何事情。

于 2013-02-06T07:40:43.693 回答