web-dev-qa-db-ja.com

AppCmdを呼び出すと、PsExecが断続的にハングする

主にバッチファイルによって管理される自動展開プロセスがあります。このプロセスの最初のステップの1つは、IIS AppPoolを停止して、更新されたファイルを安全にコピーできるようにすることです。これを行うには、次のようにPsExecを呼び出します。

PsExec.exe -accepteula %WEB_SERVER_MACHINE_NAME% cmd /c %%systemroot%%\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"%APP_POOL_NAME%" 2>&1

環境変数がある場所(これらは実際の値ではなく、説明のために):

  • WEB_SERVER_MACHINE_NAME=\\WEBSERVER01
  • APP_POOL_NAME=APP01

展開プロセス全体は通常、わずか数分で完了します。ただし、ランダムに見える場合もありますが、このプロセスはこのステップでスタックし、無期限に待機しているように見えます。このプロセス中にWebサーバーを確認しても、AppPoolは停止せず、手動でAppPoolを停止しても効果はありません。展開する必要のある6つの異なるサイトがあり、これはいずれかのサイトで発生する可能性があります。

また、次のように自動起動を無効にしてみました。

PsExec.exe -accepteula %WEB_SERVER_MACHINE_NAME% cmd /c %%systemroot%%\system32\inetsrv\AppCmd.exe set apppool /apppool.name:"%APP_POOL_NAME%" /autoStart:false 2>&1

そして時々、しかしそれは時々このステップで行き詰まるようです。したがって、PsExecではなくAppCmdの問題のようです。また、次のように、接続タイムアウトをPsExecに指定し、cmd呼び出しの最後に出口をチェーンしてみました。

PsExec.exe -accepteula -n 60 %WEB_SERVER_MACHINE_NAME% cmd /c %%systemroot%%\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"%APP_POOL_NAME%" ^& exit 0 2>&1

誰かが以前にこの問題に遭遇したことがありますか?このPsExec呼び出しが断続的に停止する原因は何ですか?

2
p.s.w.g

WMICを使用する方が信頼性が高いようです(完全ではありませんが)。これが私が使用することになったものです:

wmic /node:"%WEB_SERVER_MACHINE_NAME%" /namespace:\\root\WebAdministration path ApplicationPool where name='%APP_POOL_NAME%' call start

wmic /node:"%WEB_SERVER_MACHINE_NAME%" /namespace:\\root\WebAdministration path ApplicationPool where name='%APP_POOL_NAME%' set AutoStart=true
0
p.s.w.g