You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Add-WebConfigurationProperty中添加子配置集合

IIS重写规则单命令配置方案

配置IIS过程中,多次调用Add/Set-WebConfigurationProperty命令迭代完成重写规则配置操作繁琐,尝试直接在conditions哈希表中编写add节点的写法无法生效,逐行追加条件条目虽然可正常运行,但代码冗余度高。

失效原因

IIS的PowerShell配置命令解析嵌套哈希表时,不会自动将键名为add的单个哈希表识别为集合子项。<conditions>属于集合型配置节点,其下属的条件条目需要显式以数组格式传入,才能被命令正确识别写入。

正确实现代码

将conditions节点下add对应的值调整为数组格式,把所有条件条目作为数组元素传入,即可通过单条命令完成整条重写规则的创建,无需后续逐行追加:

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webserver/rewrite/GlobalRules" -name "." -value @{
        name="Protocol-Version Blocking Rule"; 
        stopProcessing='True';
        match=@{
          url=".*"
        };
        conditions=@{
            logicalGrouping="MatchAll";
            # add对应值为数组,每个元素对应一条条件规则
            add=@(
                @{input="{SERVER_PROTOCOL}"; pattern="HTTP/0.8";},
                @{input="{SERVER_PROTOCOL}"; pattern="HTTP/0.9";},
                @{input="{SERVER_PROTOCOL}"; pattern="HTTP/1.0";}
            )
        };
        action=@{
            type="CustomResponse";
            statusCode=505;
            statusReason="HTTP Version Not Supported";
            statusDescription="Wazaaa.";
        }
    }

使用说明

  • 即使仅需要添加1条条件规则,也需要用@()将条目包裹为数组格式,否则仍会出现写入失效问题
  • 该写法同样适配IIS配置中其他集合类型节点,比如重写规则的serverVariables、站点级别的customHeaders等,均可通过单条命令完成全量配置,无需多次调用命令追加子项

内容的提问来源于stack exchange,提问作者silmaril

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:24:26