

Powershell - vyhledávání v CSV
Ahoj,
mám 2 CSVčka (AD, HR), každé CSV o 4-6 tisících řádcích a 20-30 hodnotách.
Potřebuji v každém CSV vyhledat jednu hodnotu (employeenumber) a k tomu nějakou další property, a to vše dosadit do nové tabulky.
..
$employeenumbers = $($source |select -ExpandProperty employeenumber) + $($AD | select -ExpandProperty employeenumber |select -unique
write-host ".. creating custom hash table"
# creating custom table containing all employee numbers
foreach ($number in $employeenumbers) {
$number
$dataHR = $HR |?{$_.employeenumber -eq $number}
$dataAD = $AD |?{$_.employeenumber -eq $number}
$MyObject = New-Object psobject -Property @{
EmployeeNumber = $number
Enabled = $dataAD.Enabled
VemaOsCislo = $dataHR.employeenumber
VemaDatumOD = $dataHR.datumNastupu
VemaDatumDO = $dataHR.datumVystupu
}
$mycol += $MyObject
}
Problem je, že to vytvoření té nové tabulky trvá priserne dlouho - 4 employee/sec (je to tím, že používám arraylist a where-object).
Jenže jiný způsob mě, jakožto powershell začátečníka nenapadá (resp. napadá - hashtable, ale neumim to aplikovat pro muj případ)
Napadla mě ještě prasárna, že vytvořím několik hashtables a ty pak sloučím do custom objectu
$htname = @{}
foreach ($item in $ad) {
$ADEmployee = $item.employeenumber
$ADname = $item.name
$ADMailbox = $item.mailbox
$htname.set_Item("$ADEmployee","$ADName")
}
$htmailbox = @{}
foreach ($item in $ad) {
$ADEmployee = $item.employeenumber
$ADMailbox = $item.mailbox
$ADMailbox = $item.mailbox
$htmailbox.set_Item("$ADEmployee","$ADMailbox")
}
$mycol = @()
write-host ".. creating custom table - PsObject"
foreach ($number in $employeenumbers) {
$myobject = New-Object psobject -Property ([ordered]@{
employeenumber = $number
vemacislo = $hthrcislo[$number]
vemajmeno = $hthrUzivatelskeJmenoAD[$number]
adname = $htname[$number]
mailbox = $htmailbox[$number]
})
$mycol += $myobject
}
$mycol
.. ale přece se to nemusí dělat takto .. ne?
no nic, už jsem na to přišel
import-csv |group employeenumber -asHashTable
Zbytek je easy
Vďaka za napísanie riešenia.