Public/Discovery/Compare-Csv.ps1
function Compare-Csv { param ( [Parameter(Mandatory = $true)] [System.IO.FileInfo] $Csv1, [Parameter(Mandatory = $true)] [System.IO.FileInfo] $Csv2 ) $dataSet1 = @{} Import-Csv $Csv1 | ForEach-Object { $dataSet1.Add($_.PrimarySmtpAddress, $_) } Import-Csv $Csv2 | ForEach-Object { if ($dataSet1.Contains($_.PrimarySmtpAddress)) { $results = [PSCustomObject]@{} foreach ($property in $_.PSObject.Properties) { if ($dataSet1[$_.PrimarySmtpAddress].$($property.Name) -eq $property.Value) { $results | Add-Member -Name $property.Name -Type NoteProperty -Value $property.Value } else { $results | Add-Member -Name $property.Name -Type NoteProperty -Value 'NoMatch' } } $results } } } |