SearchWindowsServer.com

Steps to read XML files with PowerShell

By Don Jones

Can PowerShell handle XML files?

Extensible Markup Language is just text, so PowerShell can certainly load the contents of an XML file into a variable:

$xml = Get-Content MyXML.xml

But that doesn't tell PowerShell to actually understand the XML; it's just a big wodge of text. To have PowerShell read the XML, you can force it to parse the XML:

[xml]$xml = Get-Content MyXML.xml

Doing so will run the XML through the .NET Framework's XmlDocument class, meaning it will examine the XML and build a document object model from it. If the XML doesn't parse or validate, then you'll get an error.

The resulting XML object essentially turns XML nodes such as <computer></computer> into objects and collections, and it lets you access attributes like<tag attribute="value"> as object properties. It can get fairly complicated quickly. You also obtain ways to add nodes and attributes, remove them and write the modified bit back to a text file.

There are also methods for executing XPath queries. XPath is a XML query language that lets you search an XML file for specified nodes, attributes and so on.

There's a good tutorial here, if you want to start using XML in PowerShell. Be patient and be prepared to experiment a bit. Learning XPath can be extraordinarily helpful.

About the author
Don Jones is a well-known and respected PowerShell expert and educator. He's co-author of three books on PowerShell (see PowerShellBooks.com for a list). You can find his content online, including his PowerShell Q&A forums, by visiting DonJones.com.

29 Apr 2013

All Rights Reserved, Copyright 2000 - 2024, TechTarget | Read our Privacy Statement