在尝试编写一些脚本来管理我们的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-ItemPropertySet-ItemProperty时类型似乎有所不同,或者我如何以一致的方式查询此值。

注意:我并不是真的想为ManagedPipelineMode加上一个特殊的情况,因为其他所有属性似乎都表现出预期的效果。因此,有两个问题:
  • 这种奇怪的行为是什么,它使属性在读取时成为string,而在设置时成为int?所有枚举都属于这种情况吗?
  • 是否可以使用相同的类型来读取/写入此属性,所以我可以编写能够读取该值的代码,检查它是否是我们想要的,如果不是,请更新它?
  • 最佳答案

    使用以下值:0 =集成; 1 =经典

    Set-ItemProperty "IIS:\AppPools\MyAppPool" "managedPipelineMode" "1"
    

    关于iis - 为什么/如何获取与设置ManagedPipelineMode不同的类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13071933/

    10-13 06:10