5

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-ItemPropertySet-ItemProperty

注: 他のすべてのプロパティは期待どおりに動作するように見えるため、ManagedPipelineMode に特別なケースを入れたくはありません。だから、2つの質問:

  1. stringプロパティが読み取られたときにプロパティになることを許可するこの奇妙な動作は何intですか? これはすべての列挙型に当てはまりますか?
  2. 同じ型を使用してこのプロパティを読み書きする方法はありますか?そのため、値を読み取ることができるコードを記述し、それが必要なものかどうかを確認し、そうでない場合は更新できますか?
4

2 に答える 2

1

使ってみて

Set-ItemProperty -Path:'IIS\AppPools\MyAppPool' -Name:'managedPipelineMode' -Value:Classic

Classic では引用符がないことに注意してください

注: 後で混乱しないように、引数名を具体的に呼び出すことを好みます。コマンドが更新/変更されても、奇妙なことは起こりません。

コロン結合演算子も使用します。これにより、値がその名前の引数に属していることが完全に明確になります。

于 2013-07-12T21:17:34.127 に答える