• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
Think PowerShell

Think PowerShell

PowerShell for IT Pros

  • About
    • Who I Am
    • Why I Blog
    • Privacy Policy
  • Resources
    • More PowerShell Sites
    • Post Series Index
  • Get Help
  • Show Search
Hide Search

PowerShell and XML: A Practical Guide

Aaron Rothstein · July 21, 2023 · Leave a Comment

PowerShell offers several ways to work with XML, making it a powerful tool for managing configurations, parsing data, and more. In this article, we’ll explore how you can use PowerShell to create, read, and manipulate XML.

xml file icon.

Understanding XML

XML (eXtensible Markup Language) is a common data format used to store and transport data. It’s human-readable and widely supported, making it an ideal choice for many applications.

A basic XML document might look something like this:

<?xml version="1.0"?>
<employees>
  <employee>
    <name>John Doe</name>
    <position>Manager</position>
  </employee>
  <employee>
    <name>Jane Smith</name>
    <position>Developer</position>
  </employee>
</employees>

Reading XML with PowerShell

PowerShell makes it easy to read XML documents. Use the Get-Content cmdlet to read the XML file, and then cast it to [xml]:

# Read an XML file
$xml = [xml](Get-Content "C:\path\to\your\file.xml")

# Access elements
$xml.employees.employee | ForEach-Object {
  Write-Output ("Name: " + $_.name)
  Write-Output ("Position: " + $_.position)
}

Creating XML documents

You can also create XML documents with PowerShell. You can do this by creating an XmlDocument object and using its methods to add elements:

# Create an XmlDocument
$xml = New-Object System.Xml.XmlDocument

# Create and append the root element
$employees = $xml.CreateElement("employees")
$xml.AppendChild($employees)

# Create and append an employee element
$employee = $xml.CreateElement("employee")
$employees.AppendChild($employee)

# Create, set the value of, and append a name element
$name = $xml.CreateElement("name")
$name.InnerText = "John Doe"
$employee.AppendChild($name)

# Save the XML document
$xml.OuterXml | Set-Content "C:\path\to\your\file.xml"

Modifying XML documents

Modifying an XML document is as simple as reading it, making changes, and then saving it:

# Read an XML file
$xml = [xml](Get-Content "C:\path\to\your\file.xml")

# Change the name of the first employee
$xml.employees.employee[0].name = "New Name"

# Save the XML document
$xml.OuterXml | Set-Content "C:\path\to\your\file.xml"

Best practices

Here are some best practices when working with XML and PowerShell:

  • Error Handling: Always include error handling when working with files or when parsing XML.
  • Indenting XML: PowerShell doesn’t indent XML by default. If you want indented XML, use the Save method of the XmlDocument object.
  • XML vs. JSON: While XML is powerful, JSON may be easier to work with in some cases. PowerShell also supports JSON.

Conclusion

Understanding how to interact with XML using PowerShell can open up a variety of possibilities. It can make your scripts more versatile, allowing them to interact with XML-based APIs, configuration files, and more.

Explanation

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Aaron

Think PowerShell

Copyright © 2025 · Monochrome Pro on Genesis Framework · WordPress · Log in