Vet faktiskt inte vad jag skulle skriva som rubrik vilket känns väldigt typiskt för det här problemet då kännedom om korrekta söktermer troligen skulle lösa det.
Jag håller på att skriva ett litet script som konsumerar en excelfil innehållandes ärendeidn och personnummer (cids), samt en del annat som är irrelevant för sammanhanget. Personnumren finns i ett av två fält, men aldrig i båda, och ett personnummer kan vara kopplat till flera ärendeidn men inte tvärtom. Jag vill få ut objekt som har ett personnummer och alla ärendeidn kopplade till det, samt en del ad-fält som hämtas utifrån personnumret.
Ett snuttifierat exempel är enligt nedan.
Exempeldata (i csv för att göra det enklare för forumet) jag använder är:
id,cid1,cid2
1,12,
2,,12
3,13,
Vad jag vill få ut är
cid,ids,namn
12,1-2,Nisse
13,3,Ulla
Jag får det att funka med följande, där ad-grejerna är utkommenterade eftersom jag inte har ad-koppling med denna dator
Import-Module ImportExcel
$in = Import-Excel .\test.xlsx | Select-Object id,@{label="cid";e={($_.cid1+$_.cid2)}}
$uniquecids = $in | Select-Object -ExpandProperty cid -Unique
$out = @()
foreach ($cid in $uniquecids) {
#$user = get-aduser ... bla bla sökning baserat på cid
$out += [PSCustomObject]@{
cid = $cid
ids = ($in | Where-Object cid -eq $cid | Select-Object -ExpandProperty id) -join "-" #To get excel to not show System.Object
#namn = $user.givenname
}
}
return $out
Detta går fint att exportera till excel (vilket är syftet) men det känns som att det borde finnas ett finare sätt att komma åt ärendeids. Det är alltså specifikt
ids = ($in | Where-Object cid -eq $cid | Select-Object -ExpandProperty id) -join "-"
jag tänker mig borde gå att göra bättre. Jag har petat runt lite med Group-Object och försökt exportera som hashtable med tanken att jag t.ex. skulle kunna få fram alla ids kopplade till ett visst cid med t.ex.
$hash = $in | Group-Object cid -ashashtable
och sedan göra något i stil med
men får verkligen inte till det.
För mina syften så fungerar alltså redan allting men jag är specifikt ute efter en förbättring då jag misstänker att det går att göra bättre