I was going through the features of Powershell today and was fascinated by the XML handling capabilities of the tool. In this tutorial, I'm going to provide a very basic example of reading an XML document stored in the hard disk into Powershell and print the content to the console. Once we are done reading an XML document, I will explain how to query an XML document for the content we are looking after, and print the output to the console. This will be very useful for administrators who want find a way to manipulate XML documents using this tool. This simple tip is classified into the following sections:
Prepare Input XML for PowerShell
The XML file we will be using for this example is provided below: [ Note that we will be using the same file across all the tutorials ]
<?xml version="1.0" encoding="UTF-8"?>
<departments>
<item>
<deptid>100</deptid>
<deptname>marketing</deptname>
<employeecount>100</employeecount>
</item>
<item>
<deptid>101</deptid>
<deptname>finance</deptname>
<employeecount>75</employeecount>
</item>
<item>
<deptid>102</deptid>
<deptname>HR</deptname>
<employeecount>15</employeecount>
</item>
<item>
<deptid>103</deptid>
<deptname>IT</deptname>
<employeecount>250</employeecount>
</item>
<item>
<deptid>104</deptid>
<deptname>Operations</deptname>
<employeecount>50</employeecount>
</item>
</departments>
I have saved this document under my c: with the name read_xml_example.xml.
Use PowerShell to Read XML Document
We now use PowerShell to access the XML file we just created. This is done using the command shown below:
PS C:\> [xml]$departments=Get-Content c:\read_xml_example.xml
We use Get-Content to load the data in the file to the variable departments.
You can print the contents of the file we loaded just now to check if the loading is successful. To print the nodes of the XML you can execute the following command;
This command dumps all the item nodes with contents as shown below:
Wow! you have loaded XML data successfully in Powershell. That completes the first powershell XML example. If you try to print the "departments" node, you get an exception as shown below:
The error message here is self explanatory. There are different techniques available in Powershell to query the XML that we just loaded. We will look into each of these parsing techniques in the next tutorial.
Test XML Data in PowerShell
You can print the contents of the file we loaded just now to check if the loading is successful. To print the nodes of the XML you can execute the following command;
PS C:\> $departments.departments.item
This command dumps all the item nodes with contents as shown below:
PS C:\> $departments.departments.item
deptid deptname employeecount
------ -------- -------------
100 marketing 100
101 finance 75
102 HR 15
103 IT 250
104 Operations 50
Wow! you have loaded XML data successfully in Powershell. That completes the first powershell XML example. If you try to print the "departments" node, you get an exception as shown below:
PS C:\> $departments.departments
format-default : The member "Item" is already present.
+ CategoryInfo : NotSpecified: (:) [format-default], ExtendedType
SystemException
+ FullyQualifiedErrorId : AlreadyPresentPSMemberInfoInternalCollectionAdd,
Microsoft.PowerShell.Commands.FormatDefaultCommand
The error message here is self explanatory. There are different techniques available in Powershell to query the XML that we just loaded. We will look into each of these parsing techniques in the next tutorial.
No comments:
Post a Comment