在尝试编写一些脚本来管理我们的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
vs Set-ItemProperty
时类型似乎有所不同,或者我怎么做以一致行为的方式查询。
注意:我真的不想为ManagedPipelineMode添加特殊情况,因为其他所有属性似乎都按预期运行。所以,有两个问题:
string
,但在设置时为int
?这是所有枚举的情况吗?答案 0 :(得分:3)
使用以下值:0 =集成; 1 =经典
Set-ItemProperty "IIS:\AppPools\MyAppPool" "managedPipelineMode" "1"
答案 1 :(得分:0)
尝试使用
Set-ItemProperty -Path:'IIS\AppPools\MyAppPool' -Name:'managedPipelineMode' -Value:Classic
请注意Classic
上缺少引号注意: 我更喜欢专门调用参数名称,以便以后不会混淆,如果他们更新/更改命令,那么奇怪的东西就不会发生
我也使用冒号绑定操作符。这清楚地表明该值属于该名称的参数。