violetkaipa - Fotolia

Steps to read XML files with PowerShell

Wondering how to get PowerShell to read XML files? Our expert explains a few methods you could use.

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.

Dig Deeper on Microsoft cloud computing and hybrid services