Iska, венгерская нотация в PowerShell? Переутомление? Да и лучше сделать так (PowerShell v6):
Код:

$csv, $txt = (Import-Csv .\input.csv -Delimiter ','), (Get-Content .\input.txt)
$txt.ForEach{
.({ $csv += [PSCustomObject]@{samaccountname = $_; count = 1} },{
++[Int32]$csv[$csv.samaccountname.IndexOf($_)].count
})[[Byte]($_ -in $csv.samaccountname)]
}
($csv | ConvertTo-Csv) -replace '"' | Out-File .\input.csv
Результат теста производительности:
Код:

time {
$csv, $txt = (Import-Csv .\input.csv -Delimiter ','), (Get-Content .\input.txt)
$txt.ForEach{
.({ $csv += [PSCustomObject]@{samaccountname = $_; count = 1} },{
++[Int32]$csv[$csv.samaccountname.IndexOf($_)].count
})[[Byte]($_ -in $csv.samaccountname)]
}
($csv | ConvertTo-Csv) -replace '"' | Out-File .\input.csv
}, {
$sTxtFile = '.\input1.txt'
$sCSVFile = '.\input1.csv'
$sTxtContent = Get-Content -Path $sTxtFile
$sCSVContent = Import-Csv -Path $sCSVFile
$sTxtContent | ForEach-Object -Process {
$oCSVObject = $sCSVContent | Where-Object -Property 'samaccountname' -eq -Value $_
if($oCSVObject) {
$oCSVObject.count = [System.String]([System.Int32]($oCSVObject.count) + 1)
} else {
$sCSVContent += [PSCustomObject]@{samaccountname = $_; count = '1'}
}
}
$sCSVContent | ConvertTo-Csv -NoTypeInformation | ForEach-Object -Process {
$_.Replace('"','')
} | Set-Content -Path $sCSVFile -Force
}
# итог:
Total ms: 37.7992
Total ms: 108.8279
Как говорится, почувствуйте разницу.