使用powershell在Web.Config文件中编辑Log4Net属性

时间:2017-04-27 12:33:24

标签: xml powershell web-config log4net web.config-transform

在我的CI构建期间,我使用PowerShell编辑Web.Config文件中的某些值。

我使用以下代码来实现此目的;

#Open web.config
$xml = [xml](get-content($ConfigurationFile))
$conf = $xml.configuration  
$conf.appSettings.add | foreach { if ($_.key -eq "ApplicationRootUri") { $_.value = $ApplicationSettingValue } }  
$conf.appSettings.add | foreach { if ($_.key -eq "connectionString") { $_.value = $MainConnectionStringValue } }
#Save Config
$xml.Save($ConfigurationFile)

但是我需要更改的下一个属性不在配置文件的AppSettings部分中。它位于Log4App;

<log4net>
  <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
  <bufferSize value="1" />
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <connectionString value="VALUE_I_WANT_TO_CHANGE" />
</log4net>

到目前为止,我已经尝试过多种方法来改变这个价值而没有运气。

我在上面的代码中停滞不前;

$confLog = $conf.log4net.appender
$$confLog.add | foreach { if ($_.name -eq "AdoNetAppender") { $_.connectionString.value = $MainConnectionStringValue } }

我收到的错误消息通常是&#39;属性|&#39; connectionString |&#39;在这个对象上找不到。验证该属性是否存在且可以设置&#39;

任何人都知道如何正确编辑connectionString属性?

1 个答案:

答案 0 :(得分:1)

对于任何有兴趣的人来说,我离这么远很近

以下是我最终为我工作的内容

$confLog = $conf.log4net.appender
$confLog | foreach { if ($_.name -eq "AdoNetAppender") { $_.connectionString.Value = $MainConnectionStringValue } }