【发布时间】:2012-10-25 15:24:14
【问题描述】:
在尝试编写一些脚本来管理我们的 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。
所以,我知道我可以使用([int][Microsoft.Web.Administration.ManagedPipelineMode]::Classic) 设置值,但我不明白为什么在使用Get-ItemProperty 和Set-ItemProperty 时类型似乎不同,或者我如何以某种方式查询它行为一致。
注意:我真的不想为 ManagedPipelineMode 设置特殊情况,因为其他所有属性似乎都按预期运行。所以,两个问题:
- 这是什么奇怪的行为,它允许属性在读取时为
string,但在设置时为int?所有枚举都是这种情况吗? - 有什么方法可以使用相同的类型来读/写这个属性,这样我就可以编写能够读取该值的代码,检查它是否是我们想要的,如果不是,更新它?
【问题讨论】:
标签: iis powershell iis-7.5