我已经通过 powershell 编写了大部分 IIS 高级日志记录设置的脚本。
目标
我想自动化<filters>
根服务器 logDefinition 的部分。我已经尝试了多个命令,似乎没有一个工作。
最终,该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 中尝试了以下 2 个命令-它们没有给我任何错误,但也没有任何效果:
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 : Key value is missing。(虽然我不确定它正在寻找哪个键):
Add-WebConfiguration -Filter "system.webServer/advancedLogging/server/logDefinitions/logDefinition[@baseFileName='%COMPUTERNAME%-Server']/filter/condition" -Value @{operator='And'}
尝试 2
我的下一个尝试是使用配置编辑器生成脚本。所以我去进行更改,单击生成脚本并拉出它生成的 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 :缺少键值。错误如上。
我的问题
任何人都可以将我推向正确的方向吗?我觉得我很接近,但一直在撞墙。我可以手动配置这个就好了。
提前感谢您的帮助!