IIS サイトを管理するためのスクリプトを作成しようとしているときに、IIS の ManagedPipelineMode で奇妙な動作に遭遇しました。私のコードはかなり汎用的で、Get-ItemProperty を使用して古い値を読み取り、必要な値でない場合は Set-ItemProperty を使用して更新します。
ただし、これを実行すると:
Get-ItemProperty "IIS:\AppPools\MyAppPool" "managedPipelineMode"
文字列 を返しますClassic
。ただし、これを実行すると:
Set-ItemProperty "IIS:\AppPools\MyAppPool" "managedPipelineMode" "Classic"
エラーが返されますClassic is not a valid value for Int32
。
したがって、 を使用して値を設定できることはわかっていますが、 vsを使用すると型が異なるように見える理由や、これを一貫して動作させる方法でクエリを実行する方法が([int][Microsoft.Web.Administration.ManagedPipelineMode]::Classic)
わかりません。Get-ItemProperty
Set-ItemProperty
注: 他のすべてのプロパティは期待どおりに動作するように見えるため、ManagedPipelineMode に特別なケースを入れたくはありません。だから、2つの質問:
string
プロパティが読み取られたときにプロパティになることを許可するこの奇妙な動作は何int
ですか? これはすべての列挙型に当てはまりますか?- 同じ型を使用してこのプロパティを読み書きする方法はありますか?そのため、値を読み取ることができるコードを記述し、それが必要なものかどうかを確認し、そうでない場合は更新できますか?