IIS高级日志记录 - 通过Powershell编写过滤器

时间:2015-02-16 21:13:00

标签: powershell iis iis-advanced-logging

我已经通过PowerShell编写了大部分IIS高级日志记录设置的脚本。

目标

我想自动化根服务器logDefinition的<filters>部分。我尝试了多个命令,似乎都没有。

最终,system.webServer/advancedLogging/server/logDefinitions/logDefinition[@baseFileName='%COMPUTERNAME%-Server']部分应该有这样的XML:

<filter>
    <condition operator="And">
        <condition operator="And">
            <expression field="URI-Stem" operator="NotEquals" value="/serverstatuscheck" caseSensitive="false" regularExpression="false" />
        </condition>
    </condition>
</filter>

尝试1

我在powershell中尝试了以下两个命令 - 他们没有给我任何错误,但也没有任何影响:

Add-WebConfiguration -Filter "system.webServer/advancedLogging/server/logDefinitions/logDefinition[@baseFileName='%COMPUTERNAME%-Server']/filter" -Value @{operator='And'}

Add-WebConfiguration -Filter "system.webServer/advancedLogging/server/logDefinitions/logDefinition[@baseFileName='%COMPUTERNAME%-Server']/filter" -Value @{elementTagName="condition";operator='And'}

然后我尝试了以下命令,并得到错误 Add-WebConfiguration:缺少键值。(虽然我不确定它正在寻找哪个键):

Add-WebConfiguration -Filter "system.webServer/advancedLogging/server/logDefinitions/logDefinition[@baseFileName='%COMPUTERNAME%-Server']/filter/condition" -Value @{operator='And'}

尝试2

我的下一次尝试是使用Configuration Editor生成脚本。所以我去做了我的更改,点击生成脚本并拉出它生成的Powershell。这是看起来像:

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST'  -filter "system.webServer/advancedLogging/server/logDefinitions/logDefinition[@baseFileName='%COMPUTERNAME%-Server']/filter/condition" -name "." -value @{}

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST'  -filter "system.webServer/advancedLogging/server/logDefinitions/logDefinition[@baseFileName='%COMPUTERNAME%-Server']/filter/condition/condition[]" -name "." -value @{field='URI-Stem';operator='NotEquals';value='/serverstatuscheck'}

但这也不起作用。我得到了相同的 Add-WebConfiguration:缺少键值。错误如上所述。

我的问题

有人能把我推向正确的方向吗?我觉得我很亲密,但一直在撞墙。我可以手动配置它。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

经过多次尝试,试试这个:

Add-WebConfigurationProperty -Filter "/system.webServer/advancedLogging/server/logDefinitions/logDefinition[@baseFileName='%COMPUTERNAME%-Server']/filter/condition" -name "." -value @{field='URI-Stem';operator='NotEquals';value='/serverstatuscheck'}