Understanding ConvertTo-Xml in PowerShell
Welcome back to Wahmans Powershell blog! Today, we are diving into a very handy cmdlet in PowerShell: ConvertTo-Xml. This cmdlet is especially useful when you need to transform objects into an XML format for either human readability, data exchange, or further processing.
According to Microsoft’s documentation, ConvertTo-Xml “Creates an XML-based representation of an object.” In simpler terms, it allows you to serialize PowerShell objects into an XML format that can be saved, exported, or used elsewhere.
Basic Syntax
ConvertTo-Xml [-AsString] [-Depth <int>] [-InputObject] <psobject>
Example 1: Convert a basic object to XML (Beginner)
Let’s take a simple object and convert it to XML:
$object = @{Name="Alice"; Age=30}
$object | ConvertTo-Xml -AsString -Depth 2
Output: You’ll get a nicely formatted XML that represents a hashtable with Name and Age properties.
Example 2: Convert a list of processes to XML
This shows how to convert dynamic data into an XML format:
$processes = Get-Process | Select-Object -First 5
$processes | ConvertTo-Xml -AsString -Depth 2
This can be useful if you are logging or exporting process information in a structured format.
Example 3: Exporting the XML to a file (Intermediate)
Sometimes, you need the XML persisted to disk:
$services = Get-Service
$xml = $services | ConvertTo-Xml -Depth 2
$xml.Save("C:\\Temp\\Services.xml")
This creates an XML file of your current services that can be opened in a text editor or used elsewhere.
Example 4: Advanced Use – Wrapping custom objects and XML namespaces
You can create custom objects and include them in namespaces for interoperability:
$customObject = [PSCustomObject]@{
ID = 1234
Status = "Running"
Timestamp = (Get-Date)
}
$xml = $customObject | ConvertTo-Xml -AsString -Depth 3
[xml]$finalXml = $xml
$finalXml.DocumentElement.SetAttribute("xmlns:srv", "http://example.com/server")
$finalXml.Save("C:\\Temp\\CustomObjectWithNamespace.xml")
You now have an XML file with a custom namespace, suitable for integration with systems requiring specific schemas.
Final Thoughts
ConvertTo-Xml is a simple yet powerful cmdlet that can help in various scenarios—from exporting data, debugging, to integrating with external systems. I hope these examples gave you a good start on using it effectively.
Happy scripting, and I will see you in the next post!
Leave a Reply