特定の問題:
検証可能に存在する Web アプリケーション プールの名前で Restart-WebAppPool を呼び出しています。スクリプトのコンテキストでそのコマンドを実行すると、エラーが発生しCannot find path 'IIS:\AppPools\AppPoolName' because it does not exist.
ます。PowerShell コンソールでまったく同じコマンドを実行すると、魅力的に動作します。
環境:
を使用して、スクリプトの先頭で WebAdministration モジュールをロードしますImport-Module WebAdministration
。スクリプトの多くの場所で、そのモジュールの他のコマンドに依存していますが、それらはすべて正常に動作します。コマンドを呼び出す直前に、再起動しようとしているアプリ プールの名前をログ ファイルに記録しています。その名前は正しいだけでなく、エラー メッセージでも正しいです。(Get-ItemProperty -Path $SitePath).ApplicationPool
問題のサイトを操作するためにスクリプト全体で $SitePath が使用されているアプリケーション プール名を取得しています。
非常に厄介なことに、アプリケーション プールを再起動しようとする直前に、問題のアプリケーションのルート ディレクトリを を使用して新しい物理パスにリセットしました(Set-ItemProperty -Path $SitePath -Name "PhysicalPath" -Value $fullAppPath )
。これは完全に機能するため、WebAdministration がロードされていることがわかります (見つからない最も明白な理由は私が知っているアプリプールのパス)。
再起動しようとしているアプリ プール名 (powershell コマンド プロンプトでの再起動は別として) が表示されますGet-ChildItem -Path "IIS:\AppPools"
WebAdministration がそのアプリ プールを見つけられない原因となる他に何が欠けていますか?