$list1 | Where-Object ... será executado em todos os elementos de $list1 , por isso não há necessidade de usar foreach . Além disso, você pode comparar seus CSVs por meio do Compare-Object cmdlet :
$list1 = @(Import-Csv .\list1.csv)
$list2 = @(Import-Csv .\list2.csv)
$list1 = @($list1 | Where-Object {
@(Compare-Object $_ $list2 -Property FirstName,LastName,MiddleName,City -IncludeEqual -ExcludeDifferent).count -eq 0
})