在尝试编写一些脚本来管理我们的 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 设置一个特殊情况,因为其他所有属性似乎都按预期运行。所以,两个问题:
- 这种奇怪的行为是什么,它允许一个属性
string
在读取时是一个,但int
在设置时是什么?这是所有枚举的情况吗? - 有没有办法使用相同的类型读/写这个属性,所以我可以编写能够读取值的代码,检查它是否是我们想要的,如果不是,更新它?