- Uređivano
@foggy @Fico rijesio kompletno u pwsu i to sada radi u par sekundi, cijela skripta.
Quicksort funkcija starta na pola polja, tako da ide lijevo i desno i sortira:
function quicksort($Array) {
$Less = @()
$Equal = @()
$Greater = @()
if( $Array.Count -gt 1 ) {
$Pivot = $Array[$Array.count / 2]
foreach( $x in $Array) {
if($x -lt $Pivot) {
$Less += @($x)
}
elseif ($x -eq $Pivot) {
$Equal += @($x)
}
else {
$Greater += @($x)
}
}
$Array = (@(quicksort $Less) + @($Equal) + @(quicksort $Greater))
}
$Array
}
Pomocu zamjenskog polja kreirao zavrsno, popunio prethodno konstruiranu klasu i voila:
[System.Collections.ArrayList]$ArraySorted = quicksort $POLJE1.Mail
$FinalArray = @()
foreach ($Email in $ArraySorted) {
if ($POLJE1.Mail -eq $Email) {
$index = [array]::indexof($POLJE1.Mail,$Email)
$ThisVar = [ADUSER]::new()
$ThisVar.SamAccountName = $POLJE1[$index].SamAccountName
$ThisVar.Mail = $Email
$ThisVar.Name = $POLJE1[$index].Name
$ThisVar.extensionAttribute8 = $POLJE1[$index].extensionAttribute8
$FinalArray += $ThisVar
}
}
Sada se bacam da sve ovo odradim unutar funkcije quicksort, da sortira polje i zadrzi sve kolumne sa vrijednostima.