Hi,
if you want to create XML files with powershell which can be used on UNIX/Linux systems you need to write an own save function. Ths save() methode of the System.XML.XMLDocument class can only write Windows style XML files with Carriage return/New line endings.
This is a function which write Linux/UNIX style UTF8 files
function Write-UnixXml { [CmdletBinding()] param( [Parameter(Mandatory=$true, Position=0)][xml]$xmlStructure, [Parameter(Mandatory=$true, Position=1)][string]$FullPath ) $oXMLWriterSettings = new-object System.Xml.XmlWriterSettings $oXMLWriterSettings.NewLineChars = "`n" $oXMLWriterSettings.Indent = $true $oXMLWriterSettings.IndentChars = "`t" $oXMLWriterSettings.NewLineHandling = 0 $oXMLWriterSettings.Encoding = new-object System.Text.UTF8Encoding try { $oXMLWriter = [System.Xml.XmlTextWriter]::Create($FullPath, $oXMLWriterSettings) $xmlStructure.WriteTo($oXMLWriter) $oXMLWriter.Flush() $oXMLWriter.Close() } catch { write-host ([string]::Format(" Error occured while writing XML file {0}. Errormessage: {1})",$FullPath,$_.Exception.Message)) } }
Usage
PS D:\> [[xml]] $TestXML='<config>MyConfig <Value number="1"></Value></config>' PS D:\> Write-UnixXml -xmlStructure $TestXML -FullPath D:\temp\text.xml
Michael