Make two passes over the $OrdersA hash:
# find matched & unmatched users in this list (i.e. difference)
$OrdersA = @{ }
Import-Csv -Path C:\Junk\Masterlist.csv |
ForEach-Object {
$OrdersA[$_.'e-mailaddress'] = $_ |
Select-Object "e-mailaddress", "Last Name", "Legal First Name", "Anglicized Western First Name", "Last/First Legal", "Job Title", "Job Location", @{n = 'Matched'; e = { $false } }
}
$start = [system.datetime]::Now
Import-Csv -Path C:\Junk\ALLUserMain30082021.csv | # using this list as the reference
ForEach-Object {
if ($OrdersA.ContainsKey($_.EmailAddress)) {
$OrdersA[$_.EmailAddress].Matched = $true
}
}
$OrdersA.GetEnumerator() |
ForEach-Object {
if ($_.Value.Matched){
$_.Value
}
} | Export-Csv -Path C:\Junk\Matched_Report_Orders.csv -NoTypeInformation
$OrdersA.GetEnumerator() |
ForEach-Object {
if (-not $_.Value.Matched){
$_.Value
}
} | Export-Csv -Path C:\Junk\Not_Matched_Report_Orders.csv -NoTypeInformation
$end = [system.datetime]::Now
$resultTime = $end - $start
Write-Host "Execution took : $($resultTime.TotalSeconds) seconds."