Web アプリケーションと Web サービス用の PowerShell 3.0 インストーラーを作成していますが、物理パスの資格情報を設定しようとするとつまずきます。
私のコードは次のようになります。
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# >>>>>> Path credentials
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# Set the physical path credentials of the web application (on Basic Settings screen) to Connect As...
$filter="/system.applicationHost/sites/site[@name='{0}' and @id='1']/application[@path='/{1}']/VirtualDirectory[@path='/']" -f $script:WebSiteName,$appName
Set-WebConfiguration $filter -Value @{userName="$physicalPathCredentialUserID";password="$physicalPathCredentialPassword"}
実行すると、PowerShell で「この構成セクションはこのパスでは使用できません。これは、セクションが親レベルでロックされている場合に発生します」というエラーが表示されます。認証セクションがロックされているときに機能する PSPath と location タグを試しましたが、効果がないようです。-Force オプションが機能するのではないかと思いましたが、エラーはスローされませんでしたが、物理パスの資格情報が取得されていないようでした。
-Force オプションを指定しないと、エラーがスローされますが、PowerShell はメッセージを遮断するため、どのセクションについて不平を言っているのか、またはどの親レベルがロックされているのか正確にはわかりません。/configuration/system.applicationHost/sites/application/virtualDirectory を構成しようとしているので、Sites セクションであると想定する必要があります。
ロックを解除することと、上書きして値を保持できるようにすることの違いについて、私は少し混乱しています。PowerShell WebAdministration は、この分野でかなり混乱しています。IIS 管理 UI で設定できる値に当然のことながら値を設定することがなぜそれほど混乱しなければならないのか、私にはわかりません。上記のように、Set-WebConfiguration を醜い文字列で使用する値もあれば、Set-WebConfigurationProperty を使用する値もあります。ロックが既知の問題である場合、ロック解除がより適切に文書化されていないのはなぜですか?
すべてのサイトまたはすべてのアプリケーションのロックを解除したくありません。既定の Web サイトにインストールする各 Web アプリケーションの構成値を設定するために必要なものをロック解除したいだけです。
2014 年および PowerShell 3.0 の時点で、構成セクションのロックを解除またはオーバーライドするための決定的な解決策は何ですか? また、どの設定が PSPath と場所を受け入れますか?
ところで、私は次の変種を試しました:
$filter="/system.applicationHost/sites/site[@name='{0}' and @id='1']/application[@path='/{1}']/VirtualDirectory[@path='/']" -f $script:WebSiteName,$appName
Set-WebConfiguration $filter machine/webroot/appHost -metadata overrideMode -value Allow
しかし、フィルタがサイト レベルに戻されるまで、ロックされたセクション メッセージを取得し続けました。
また、virtualDirectoryDefaults.userName と virtualDirectoryDefaults.password を設定しようとしましたが、最初は取得できなかったようですが、IISReset の後、それらが実際に applicationHost.config ファイルの下部に追加されていることに気付きました。私たちのアプリはサーバー上の他のアプリに影響を与えるべきではないので、それらをデフォルトとして設定したくありません。
ご提供いただけるご支援に感謝いたします。これらおよびその他の Web アプリケーション構成値を設定することはそれほど難しくないはずなので、何かが欠けているに違いありません。
よろしく