使用PowerShell替换XML属性

时间:2017-02-15 09:15:40

标签: xml powershell

目前希望使用PowerShell脚本替换XML文件的from,to和subject属性。

<configuration>
<configSections>
</configSections>
<elmah>
 <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="SqlServer" />
    <errorMail from="test@test.org" to="test@test.co.uk" cc="" subject="Error email title"/>
    <errorFilter>
    <test>
     </test>
 </errorFilter>
</elmah>

我尝试了以下foreach循环,但这似乎没有更新属性:

$xmlDoc = [XML](Get-Content "$path\Web.config")
foreach ($item in  $xmlDoc.configuration.elmah.errorMail){
{$item.from = 'test1@test1.org'}
{$item.to = 'test2@test2.org'}
{$item.subject = 'test3'}
}
$xmlDoc.Save("$path\Web.config")

任何人都对此脚本有所帮助吗?

1 个答案:

答案 0 :(得分:1)

将分配包装在scriptblock 中,这可能会引入新变量并防止更新xml中的属性。所以只需删除大括号

$xmlDoc = [XML](Get-Content "$path\Web.config")
foreach ($item in  $xmlDoc.configuration.elmah.errorMail)
{
    $item.from = 'test1@test1.org'
    $item.to = 'test2@test2.org'
    $item.subject = 'test3'
}
$xmlDoc.Save("$path\Web.config")