Docteur L – François Lessard

SharePoint Architect, IT Manager and IT Specialist

  • Author:
  • Published: Oct 15th, 2011
  • Category: CSV, PowerShell
  • Comments: None
  •             

Compare two CSV files with PowerShell

Tags: , , ,

I’ve found this code on the PowerGui Forum. It’s a great PowerShell Script to compare files. I’ve made a small modification to it so items in both files don’t required to be sorted.

[codesyntax lang="powershell"]

$csv1 = import-csv D:\temp\name1.csv
$csv2 = import-csv D:\temp\name2.csv

$result1 = $(compare-object $csv1 $csv2 -IncludeEqual | where {$_.SideIndicator -eq "=="} | foreach {$_.InputObject}) | Sort-Object {$_.Name}
$result2 = $(compare-object $csv2 $csv1 -IncludeEqual | where {$_.SideIndicator -eq "=="} | foreach {$_.InputObject}) | Sort-Object {$_.Name}

$members1 = $csv1 | Get-Member -MemberType  NoteProperty |  foreach {$_.Name}
$members2 = $csv2 | Get-Member -MemberType  NoteProperty |  foreach {$_.Name}

$newMembers = $(compare-object $members1 $members2 | where {$_.SideIndicator -eq "=>"}  | foreach {$_.InputObject})

for($i=0; $i -lt $newMembers.length; $i++)
{
	$prop = $newMembers[$i]
	$result1 | add-member noteproperty $prop $null

	for($x=0; $x -lt $result1.length; $x++)
	{
		$newMembers | foreach {
		$result1[$x].$prop = $result2[$x].$prop
  		}
 	} 

}

$result1 | export-csv D:\temp\new.csv -NoTypeInformation
get-content D:\temp\new.csv

[/codesyntax]

Share on TwitterShare on LinkedInSubmit to StumbleUponDigg ThisSubmit to reddit

© 2011 Docteur L – François Lessard. All Rights Reserved.

This blog is powered by Wordpress and Magatheme by Bryan Helmig.

Switch to our mobile site