Add elements to XML using PowerShell

Add elements to XML using PowerShell.

John Savill

December 28, 2015

1 Min Read
ITPro Today logo

Q. How can I add elements to an XML file with PowerShell?

A. It's actually fairly easy to add content to an XML file using PowerShell. The first step is to create a new XML element containing your required data. The example below is taken from a FAQ I wrote about adding a timezone to an unattend answer file when creating a Nano server (http://windowsitpro.com/windows-server-2016/customize-nano-server-deployment-during-creation). The code below creates a TimeZone element then sets the value.

$child = $xml.CreateElement("TimeZone", $xml.unattend.NamespaceURI)$child.InnerXml = "Central Standard Time"

The next step is to append the new XML element to the section of the XML file required. I needed to add to the component element of oobeSystem settings section which I search for that is part of the greater unattend section and add the element using:

$null = $xml.unattend.settings.Where{($_.Pass -eq 'oobeSystem')}.component.appendchild($child) 

Notice the $xml is the XML file and then the elements of the XML, .unattend then .settings and the specific settings instance I want to add to (oobeSystem).

The complete code is:

$xml = [xml](gc $UnattendFile)$child = $xml.CreateElement("TimeZone", $xml.unattend.NamespaceURI)$child.InnerXml = "Central Standard Time"$null = $xml.unattend.settings.Where{($_.Pass -eq 'oobeSystem')}.component.appendchild($child) $xml.Save($UnattendFile)

You can use this as a basis for any additions you may require in your own files. You could also modify the value of existing elements using the same syntax, for example to set a value I could use:

$xml.unattend.settings.Where{($_.Pass -eq 'oobeSystem')}.component..Value = ""

 

About the Author(s)

Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.

You May Also Like