2014-10-01 104 views
-1

我真的很难得到这个工作。我可以使用PowerShell更新应用程序设置,但有一行我需要在目标节点中修改。下面是我的XML如何使用PowerShell更改app.config文件中的nlog值

<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" /> 
</startup> 
<entityFramework> 
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, 
EntityFramework" /> 
<providers> 
    <provider invariantName="System.Data.SqlClient" 
    type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
</providers> 
    </entityFramework> 
    <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true"> 
    <targets> 
    <target name="f1" xsi:type="File" fileName="test.log.txt" layout="${threadname} 
    ${longdate} ${callsite} ${logger}[${level}] ${message}" /> 
    <target name="console" xsi:type="Console" layout="${threadname} ${longdate} ${callsite} 
    ${logger}[${level}] ${message}" /> 
    </targets> 
    <rules> 
    <!--<logger name="Quartz.*" level="Warn" />--> 
    <logger name="*" writeTo="f1" minlevel="Info" /> 
    <logger name="*" writeTo="console" minlevel="Debug" /> 
    </rules> 
    </nlog> 

的目标节点中的一部分,它说test.log.txt我只是想有一个像“C本文件路径:\项目\日志\ test.log.txt “

这是我用于应用程序设置,它的工作

$webConfig = 'C:\Projects\app.exe.config' 
$webConfigXml = [xml](gc $webConfig 

$appSetting = $webConfigXml.configuration.appSettings.add | where {$_.Key -eq 'userName'} 
$appSetting.value = 'testUser' 

与很多挣扎这一

+0

我试图改变这个应用程序设置,它的工作$ appSetting = $ webConfigXml.configuration.appSettings.add |其中{$ _。Key -eq'user.name'} $ appSetting.value ='testeUser' – srk786 2014-10-01 11:19:33

+0

但我尝试更改的值不在应用设置下 – srk786 2014-10-01 11:20:06

+0

我刚更新了应用设置的问题为我工作 – srk786 2014-10-01 11:23:01

回答

1

你可以做到以下几点:

$xml = [xml](gc $webConfig) 
$t = $xml.getElementsByTagName("targets") 
$t.target | % { if ($_.fileName -eq 'test.log.txt') {$_.setAttribute('fileName','c:\project\logs\test.log.txt')} } 
$xml.outerXml | Out-File $webConfig 

选择所需节点的方式稍有不同,但应该按照需要进行。