我想使用PowerShell替换所有配置文件中存在的note属性。
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<configSections>
<section name="cutomSection" type="SomeType"/>
</configSections>
<cutomSection>
<add key="dontUpdateThisKey" value="Value not to be updated 1"/>
<add key="keyNameToFind" value="Old value"/>
<add key="dontUpdateThisKey2" value="Value not to be updated 2"/>
<add key="dontUpdateThisKey3" value="Value not to be updated 3"/>
</cutomSection>
<supportAuth>
<add key="baseUrl" value="https://test.com"/>
<add key="timeout" value="30"/>
</supportAuth>
</configuration>
到目前为止,我有以下工作代码,但是我敢肯定,这样做可以更有效。打印输出仅用于调试,结果代码中不需要。
更直接的方式可以更新属性值吗?我正在循环查找键名,并有一个“找到”标志...必须有更好的方法...
ls "c:\Test\" *.config -rec | % {
$found = 0;
$f = $_.FullName;
#$f;
try {
$config = [xml](Get-Content -LiteralPath $f);
$config.configuration.cutomSection.add| % {
if ($_.key -eq "keyNameToFind") {
$found = 1;
$_.value = "New test value";
}
}
if ($found -eq 1) {
#"Saving " + $f;
$config.Save($f);
} else {
#"Ignoring " + $f;
}
} catch {
#"Error " + $f;
#$_.Exception.Message
}
}