找回密码
 新建账号

用 Powershell 给 IIS 配置元素集合添加 remove clear 配置元素

[复制链接]
蔡徐坤 发表于 2023/12/4 20:21 | 显示全部楼层 |阅读模式
本文讲述怎样给 IIS 配置元素集合(ConfigurationElementCollection)添加 <remove> <clear /> 配置元素(ConfigurationElement)。

IIS 的配置元素如果包含一系列相同标签的子元素,这些子元素会组成一个配置元素集合。

IIS 有配置元素集合的配置元素很多,比如
system.webServer/rewrite/outboundRules 有 <rule> 标签组成的配置元素集合
system.webServer/fastCgi 有 <application> 标签组成的配置元素集合
system.webServer/handlers 有 <add> 标签组成的配置元素集合
system.webServer/httpProtocol/customHeaders 有 <add> 标签组成的配置元素集合
system.webServer/webdav/authoringRules 有 <add> 配置元素集合
以下是 IIS system.webServer/httpProtocol/customHeaders 配置实例的代码
  1. <system.webServer>
  2.         <httpProtocol>
  3.                 <customHeaders>
  4.                         <add name="x-who-am-i" value="wuxiancheng"></add>
  5.                         <add name="x-how-old-am-i" value="98"></add>
  6.                         <add name="x-site-address" value="https://www.51-n.com/"></add>
  7.                 </customHeaders>
  8.         </httpProtocol>
  9. </system.webServer>
复制代码
使用 IISAdministration 模块的 New-IISConfigCollectionElement 命令可以在配置元素集合中创建一个新的集合元素,但不能创建其它标签的元素,有些时候我们需要使用 <remove> 标签来删除一个指定的集合元素,有时候我们需要使用 <clear> 标签来删除配置集合中的所有元素,但 Powershell IISAdministraton 模块并没有提供一个叫 New-IISConfigElement 的命令来实现自由添加指定标签的配置元素。好在我们可以使用 IIS ServerManager 来实现。
以下 Powershell 代码以给 system.webServer/httpProtocol/customHeaders 添加一个 remove 标签的配置元素为例,clear 元素同理,其它配置节点的配置元素集合也可以用这个方法实现添加 clear 和 remove 标签。
  1. $ServerManager = Get-IISServerManager
  2. $Collection = $ServerManager.GetApplicationHostConfiguration().GetSection("system.webServer/httpProtocol").GetChildElement("customHeaders").GetCollection()
  3. $RemoveElement = $Collection.CreateElement("remove")
  4. $RemoveElement.SetAttributeValue("name", "X-Powered-By")
  5. $Collection.Add($RemoveElement)
  6. $ServerManager.CommitChanges()
  7. $ServerManager.Dispose()
复制代码
相关链接 Get-IISServerManager ConfigurationElementCollection

手机版|轻松E站

GMT+8, 2024/4/28 23:51

快速回复 返回顶部 返回列表