2016-08-03 3 views
0

Ich wurde vor kurzem eine Liste von 60k Benutzernamen gegeben. Ich wurde dann gebeten, diese Benutzernamen im aktiven Verzeichnis zu finden, ihren Anzeigenamen aufzulisten und sie in separaten CSV-Dateien basierend auf ihrem Partner (extensionattribute7) zu speichern.Cross-Matching-Benutzername Feld von CSV zu Samaccount-Namen in Active Directory? + einzigartiger Filter?

Ich habe seit gut 3 Stunden herumgefummelt .. Es gibt nicht viele Ressourcen zur Verfügung, um mir zu helfen, und ich bin verzweifelt. Danke, dass du dir die Zeit genommen hast, mir zu helfen!

+0

Was haben Sie bisher versucht. Weitere Details zu Ihrem Problem wären hilfreich. – AnimiVulpis

Antwort

1

Ich hatte keine Chance, dies zu testen, aber hier ist ein kurzes Skript, das tun wird, was Sie brauchen.

Im Wesentlichen listet das Skript Ihre CSV-Datei mit Benutzernamen auf und erstellt ein Array mit allen passenden Benutzern in Ihrem CSV. Zusätzlich wird mit 'extensionattribute7' eine einzigartige Liste von Affiliates innerhalb des $ aAffiliates-Arrays erstellt.

Als nächstes zählt das Skript die eindeutigen Affiliates auf und für jedes werden alle Benutzer gefunden, deren Affiliate-Property mit dem aktuellen Affiliate in der Schleife übereinstimmt. Diese gefundenen Benutzer werden dann zum Array $ aResults hinzugefügt, die dann in eine CSV-Datei exportiert werden, die den Namen des Partners im Dateinamen enthält.

Hoffe, das hilft!

Import-Module ActiveDirectory 

$aUsers = @() 
$aAffiliates = @() 
$List = Get-Content "C:\Temp\List.txt" 

ForEach ($Item in $List) { 
    $Item = $Item.Trim() 
    $User = Get-ADUser -Filter { SamAccountName -like $Item } -Properties DisplayName, extensionattribute7 

    # Build unique list of affiliates 
    If ($aAffiliates -notcontains $User.extensionattribute7) { 
     $aAffiliates += $User.extensionattribute7 
    } 

    $hItemDetails = New-Object -TypeName psobject -Property @{ 
     Username = $Item 
     DisplayName = $User.DisplayName 
     Affiliate = $User.extensionattribute7 
    } 

    #Add data to array 
    $aUsers += $hItemDetails 
} 

ForEach ($Affiliate in $aAffiliates) { 
    $aResults = @() 

    ForEach ($User in $aUsers) { 
    If ($User.Affiliate -eq $Affiliate) { 
     $aResults += $User  
    } 
    } 

    $Path = "C:\Temp\Results-$($Affiliate).csv" 
    $aResults | Export-CSV $Path 
} 
+0

das ist erstaunlich, vielen dank! – MMbill