First of all apologies for the title which is a bit click baity – it’s because I spent a lot of time googling for this and couldn’t find what I needed, that had been done in the way I wanted it doing. This is like a digital notebook for me to come back to as a reminder!
The problem…
What I wanted to achieve is a straight forward way of taking two Powershell system array objects and combining them together into a new system.array in a similar way to how Excel does a VLOOKUP against two data series. So take $array1, match it against $array2 and produce $array3 that includes all the information from the original two arrays, combined together into a single object.
The solution…
Here’s how I did it:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[cc lang="powershell"] $Combined = @() foreach ($i in $inputfile) { foreach ($iter in $allusers) { if ($i.username -match $iter.samaccountname) { write-host "Match found between $($i.username) and $($iter.samaccountname)" $hash = @{ Username = $i.username NewDIR = $i.destination SamAccountName = $iter.samaccountname CurrentDIR = $iter.homedirectory } $Build = New-Object PSObject -Property $hash $Total = $Total + 1 $Combined += $Build } } } Write-Host "Processed $Total records" [/cc] |