Эта версия использует немного больше PowerShell и обрабатывает несколько элементов с помощью клавиш WorkDir:
$xml = [xml](Get-Content foo.xml)
$xpath = "/sections/section/item[@key='WorkDir']"
Microsoft.PowerShell.Utility\Select-Xml $xml -XPath $xpath |
Foreach {$_.Node.SetAttribute('value', $pwd)}
$xml.Save("$pwd\bar.xml")
Обратите внимание: если у вас установлены PowerShell Community Extensions , вы можете использовать командлет Format-Xml для форматирования выходных данных и сохранения их с помощью Out-File, например ::
.
$xml | Format-Xml -AttributesOnNewLine | Out-File bar.xml -enc utf8
OTOH $ xml.Save () проще, за исключением того, что вы должны помнить, что он, вероятно, не имеет правильного текущего dir, если вам нужно было указать только имя файла. Вот почему я использовал «$ pwd \ bar.xml» в первом примере. Это не проблема с командлетами PowerShell, такими как Out-File.