如何使用Powershell和IIS管理模块

时间:2018-05-21 14:00:52

标签: powershell iis

如何使用IISAdministration模块将新元素添加到applicationHost.config的根目录?

我将当前代码(为简洁而编辑)拼凑在一起,以便在IIS 10中引导新网站。

Import-Module IISAdministration
$Manager = Get-IISServerManager
$Name = "my.sitedomain.foo"
$Config = $Manager.GetApplicationHostConfiguration()
$Config.GetSection("system.webServer/security/dynamicIpSecurity",$Name)
$DIPSecurity = $Config.GetSection("system.webServer/security/dynamicIpSecurity",$Name)
if($DIPSecurity -ne $null){
    $DIPSecurity.GetChildElement("denyByRequest") | %{
        $_.SetAttributeValue("enabled",$true)
        $_.SetAttributeValue("maxRequests",20)
        $_.SetAttributeValue("requestIntervalInMilliseconds",200)
    }            
}

当通过IIS管理器修改了dynamicIpSecurity元素时,xml会被添加到配置文件中。但是,开箱即用,我的IIS applicationHost.config没有该网站的<location>子元素。

目的是检查location元素是否存在,如果不存在,则添加如下内容

<location path="my.sitedomain.foo">
    <system.webServer>
        <security>
            <dynamicIpSecurity>
                <denyByConcurrentRequests enabled="true" />
                <denyByRequestRate enabled="true" />
            </dynamicIpSecurity>
        </security>
    </system.webServer>
</location>

非常感谢, 詹姆斯

1 个答案:

答案 0 :(得分:0)

我的问题措辞很差。真的,我应该问过&#34;如何使用IISAdministration powershell模块为特定站点配置dynamicIpSecurity?&#34;。

由于我对IIS管理和Microsoft.Web.Administration的了解有限,我的注意力集中在错误的障碍上。正确问题的解决方案重新阅读https://docs.microsoft.com/en-us/iis/manage/scripting/how-to-use-microsoftwebadministration#set-configuration-in-site-root-webconfig(感谢Lex Li改变了我的想法)。

通过使用ServiceManager.GetWebConfiguration("name.ofyour.site")而不是使用ServiceManager.GetApplicationHostConfiguration(),您将获得指定网站的配置对象,其中包括所有配置元素,而不管实际写入该配置的文件。