您好我正在尝试更改powershell中的目标值,但没有运气。 这是我正在使用的脚本。它可以很好地更改应用程序设置值,但不能更改目标值
$webConfig = 'C:\Users\Desktop\xml\web.config'
$doc = (Get-Content $webConfig) -as [Xml]
$obj = $doc.configuration.targets | where {$_.filename -eq 'test.log.txt'}
$obj.value = 'C:\test_logs\test.log.txt-${shortdate}.log.txt'
$doc.Save($webConfig)
我收到以下错误。 物业价值'在这个对象上找不到。验证该属性是否存在且可以设置。
这是web.config
<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>
编辑过的脚本 $ webConfig =&#39; C:\ Users \ Desktop \ xml \ web.config&#39; $ doc =(Get-Content $ webConfig)-as [Xml] $ obj = $ doc.configuration.targets.target |其中{$ _。fileName -eq&#39; test.log.txt&#39;} $ obj.SetAttribute&#39; C:\ test_logs \ test.log.txt - $ {shortdate} .log.txt&#39; $ doc.Save($ webConfig)
答案 0 :(得分:0)
$ obj是空的,你错过了'目标'属性
$obj = $doc.configuration.targets | foreach { $_.target } | where { $_.fileName...
或者在v3中:
$obj = $doc.configuration.targets.target | where { $_.fileName -and $_.fileName -eq..
答案 1 :(得分:0)
请尝试使用SetAttribute(string,string)。我在使用PowerShell为属性/子元素设置的魔术属性时遇到了问题:
$obj.SetAttribute( 'value', 'C:\test_logs\test.log.txt-${shortdate}.log.txt' )
如果缺少value
属性,这也会有效。