0

現在、特定の名前の APP が IIS サーバーに存在するかどうかを確認するアプリケーションに取り組んでいます。このコマンドの実行には PsExec を使用します。

コマンド ラインでこれをテストしているときに、APP が存在しない場合、appcmd が ExitCode 1 で終了することに気付きました。同様に、APP が存在する場合は 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 アプリケーションには一意の名前が必要なため、既に存在するアプリケーションを作成するとエラーが発生しますが、何も変更されません。

これは、常に新しいアプリを作成しようとすると、完全に正常に機能することを意味します。存在しない場合は作成され、既に存在する場合は何も起こりません。

于 2013-02-06T07:40:43.693 に答える