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