﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>HowTo: Reading / Searching through XML Files</title><link>http://www.visualbasicscript.com/</link><description /><copyright>(c) VBScript Forum</copyright><ttl>30</ttl><item><title> HowTo: Reading / Searching through XML Files (turranx)</title><description>  The code on this page processes the output file generated by the code located here: &lt;a href="http://www.visualbasicscript.com/m_62022/tm.htm" target="_blank" rel="nofollow"&gt;http://www.visualbasicscript.com/m_62022/tm.htm&lt;/a&gt; &lt;br&gt;   &lt;br&gt;  &lt;pre class="prettyprint"&gt;#--------------------==--------------------#
 #--------------&amp;nbsp; Description --------------#
 #
 # This script takes an input file (example shown below) and looks
 # for any Public Folders where the items counts for all the
 # replicas are not identical.
 
 #--------------- Input File ---------------#
 # 
 # The input file is generated from the output of my PowerShell script
 # Compare_Public_Folders_Between_Ex2000_and_Ex2007.ps1.&amp;nbsp; An excerpt of
 # this file is shown below.
 # &amp;lt;?xml version="1.0" encoding="ISO-8859-1"?&amp;gt;
 # &amp;lt;Public_Folders&amp;gt;
 #&amp;nbsp;&amp;nbsp; &amp;lt;x /&amp;gt;
 #&amp;nbsp;&amp;nbsp; &amp;lt;Run_Details&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Start&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TimeStamp&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Year&amp;gt;2008&amp;lt;/Year&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Month&amp;gt;7&amp;lt;/Month&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Day&amp;gt;15&amp;lt;/Day&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Time&amp;gt;13:28:23&amp;lt;/Time&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/TimeStamp&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Start&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Finish&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TimeStamp&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Year&amp;gt;2008&amp;lt;/Year&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Month&amp;gt;7&amp;lt;/Month&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Day&amp;gt;15&amp;lt;/Day&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Time&amp;gt;15:23:26&amp;lt;/Time&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/TimeStamp&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Finish&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Parameters&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Connect_As_Identiy&amp;gt;UserID&amp;lt;/Connect_As_Identiy&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;New_Server&amp;gt;NewMailServer&amp;lt;/New_Server&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Old_Server&amp;gt;OldMailServer&amp;lt;/Old_Server&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Security_Permission_Mode&amp;gt;Add&amp;lt;/Security_Permission_Mode&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Parameters&amp;gt;
 #&amp;nbsp;&amp;nbsp; &amp;lt;/Run_Details&amp;gt;
 #&amp;nbsp;&amp;nbsp; &amp;lt;Public_Folder ID="3"&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;Access Issues&amp;lt;/Name&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Path&amp;gt;\Access\Access Issues&amp;lt;/Path&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Friendly_Web_Address&amp;gt;HTTP://OldMailServer/public/Access/Access Issues&amp;lt;/Friendly_Web_Address&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Proper_Web_Address&amp;gt;HTTP://OldMailServer/public/Access/Access%20Issues&amp;lt;/Proper_Web_Address&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Replica&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Server_Name&amp;gt;cocsxchng01&amp;lt;/Server_Name&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Web_Address_Header&amp;gt;http://OldMailServer&amp;lt;/Web_Address_Header&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Replica&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Replica&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Server_Name&amp;gt;NewMailServer&amp;lt;/Server_Name&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Web_Address_Header&amp;gt;https://NewMailServer&amp;lt;/Web_Address_Header&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Item_Count&amp;gt;26&amp;lt;/Item_Count&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Byte_Count&amp;gt;540999&amp;lt;/Byte_Count&amp;gt;
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Replica&amp;gt;
 #&amp;nbsp;&amp;nbsp; &amp;lt;/Public_Folder&amp;gt;
 
 
 #----------------- Output -----------------#
 #
 # This is an example of the output that is displayed on screen.
 #
 # Item Count mismatch for folder 
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \Finance\Conference Call Calendar
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OldMailServer :&amp;nbsp; 71
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NewMailServer :&amp;nbsp; 55
 # Item Count mismatch for folder
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \Marketing\Administration\Team A
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OldMailServer :&amp;nbsp; 2655
 #&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NewMailServer :&amp;nbsp; 2653
 # Done.
 
 
 set-psdebug –strict;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Require declaration of powershell variables
 # Set-PSDebug -Off;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # Do not require declaration of variables
 $strPathToFile &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = "U:\Development";
 $strFileName &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = "XMLDoc.old.txt";
 $xmlLog &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = [xml]( Get-Content (join-path -path $strPathToFile $strFileName));
 $colPublicFolders &amp;nbsp;&amp;nbsp;&amp;nbsp; = $xmlLog.Public_Folders.Public_Folder;
 
 foreach ($objPublicFolder in $colPublicFolders) {
 &amp;nbsp;&amp;nbsp;&amp;nbsp; # If there was only one replica for a folder, then 
 &amp;nbsp;&amp;nbsp;&amp;nbsp; # ($objPublicFolder.Replica -is [array]) would return false
 &amp;nbsp;&amp;nbsp;&amp;nbsp; if ($objPublicFolder.Replica -is [array]) {
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $Item_Count_for_First_Replica = $objPublicFolder.Replica[0].Item_Count;
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $colReplicas = $objPublicFolder.Replica;
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $mismatch = $False;
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # Compare the item count for each replica against
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # the first replica item count.
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($objReplica in $colReplicas) {
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; If ($objReplica.Item_Count -ne $Item_Count_for_First_Replica) {
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $mismatch = $True;
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ($mismatch -eq $True) {
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host "Item Count mismatch for folder`n`t" $objPublicFolder.Path;
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ($objReplica in $colReplicas) {
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host "`t" $objReplica.Server_Name ": " $objReplica.Item_Count;}
 &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }
 &amp;nbsp;&amp;nbsp;&amp;nbsp; }
 &amp;nbsp;&amp;nbsp;&amp;nbsp; $colReplicas = $Null;
 &amp;nbsp;&amp;nbsp;&amp;nbsp; $Item_Count_for_First_Replica = $Null;
 &amp;nbsp;&amp;nbsp;&amp;nbsp; $objReplica = $Null;
 }
 $strPathToFile = $Null
 $strFileName = $Null
 $objPublicFolder = $Null;
 $colPublicFolders = $Null;
 $xmlLog = $Null;
 Write-Host "Done.";
 &lt;/pre&gt; </description><link>http://www.visualbasicscript.com/fb.ashx?m=62487</link><pubDate>Fri, 18 Jul 2008 17:46:51 GMT</pubDate></item></channel></rss>
