Lihtne asi, võta xml ja muuda seal mingi väli ära ja salvesta uue nimega tagasi. Esimene asi, mille otsa kohe jooksin oli salvestamine. Varemgi ette sattunud, aga ei olnud meeles - Powershell tahab täisteekonda failinimele. Kui peale $xml.save($filename) ühtegi faili ei tekkinud, sai natuke mõeldud ja infot otsitud ning probleem lahenes sellega, et panin $filename = "$pwd\output.xml".
Teine komistuskivi. Algne xml fail on ilma BOM baitideta, aga Powershell paneb $xml.save() tehes uuele failile BOM baidid algusesse. Jälle mõnda aega netis tuhnimist ja kuigi päris otsest näidet ei olnud Powershellile, sai mitmest kohast info kokku lapitud ja tulemuseks ilma BOM baitideta väljundifaili kätte. Lihtsustatult:
$XMLInput = "$pwd\input.xml"
$XMLOutput = "$pwd\output.xml"
$list = New-Object System.Xml.XmlDocument
$list.PreserveWhitespace = $true
$list.load($XMLInput)
...
käime xml faili läbi ja teeme vajalikud muudatused
...
# uus väljundifail
$file = New-Object System.IO.FileStream($XMLOutput, [IO.FileMode]::CreateNew)
# Teeme XmlTextWriter objekti koos UTF8 enkodeerimisega, et faili kirjutada
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False)
$xwriter = New-Object System.Xml.XmlTextWriter($file, $Utf8NoBomEncoding)
$list.save($xwriter)
$xwriter.Close()