none
Formatieren von Liste / Username - Gruppenzugehörigkeit RRS feed

  • Allgemeine Diskussion

  • Hallo Freunde des scriptings,

    zuallererst, was ist das Ziel des ganzen:

    Ich habe eine Liste mit Usernamen und will wissen in welchen Gruppen die sind und zwar so dass in der Ausgabe der Usernamen und die Gruppen stehen.

    Im Prinzip klappt das auch, aber das Format ist ein wenig undurchsichtig:

    Username1 Gruppe Gruppe Gruppe Gruppe Gruppe Gruppe Gruppe GruppeGruppe Gruppe Username2 Gruppe Gruppe Gruppe Gruppe Gruppe Gruppe Gruppe Username3 Gruppe Gruppe

    Mal sehr vereinfacht dargestellt

    Deshalb die Frage, wie bekomme ich das übersichtlicher?

    Add-Type -AssemblyName System.DirectoryServices.AccountManagement $username = Get-Content W:\Userliste.txt # hier lese ich die Liste mit usernamen ein foreach ($a in $username){ #schleife für jeden Eintrag in der Userliste $ct = [System.DirectoryServices.AccountManagement.ContextType]::Domain # habe ich geklaut $user = [System.DirectoryServices.AccountManagement.UserPrincipal]::FindByIdentity($ct, $a) # auch geklaut $groups = $user.GetGroups() # auch geklaut $member = foreach($i in $groups){#s.o $i.SamAccountName # s.o } $data1 = ($a+ " " +$member) # hier füge ich den Usernamen ($a) zu den Berechtigungen dazu $data2+=$data1 # hier wollte ich eigentlich für jeden Eintrag ein neues Arrayfeld haben } $data2 | out-file "W:\grpuser9.txt" 

    Ich hatte es auch schon mit:

    $data1 = @{"Name" = $a; "Gruppen" = $members}

    versucht, das Problem dabei ist allerdings die user sind in zu vielen Gruppen, so dass ich nicht alle gruppen angezeigt bekomme.

    Jemand eine Idee?

      

    EDIT: Erledigt, habe das nun ganz anders gelöst:

    $User =  Get-Content W:\KSC_Userliste.txt
    foreach($a in $user){
    $member = Get-ADPrincipalGroupMembership $a | format-table SamAccountName, @{label = "Username";expression ={$a}}
    $ergebnis+= $member
    }
    $ergebnis| out-file "W:\KSC_grpmember1.txt"


    Montag, 20. Februar 2012 14:03

Alle Antworten

  • Hallo,

    ein anderer, wenn auch etwas umständlicherer, Weg wäre die Verwendung des Attributes "MemberOf" eines AD Objektes. z.B.:

    Get-ADUser -Filter * -Properties MemberOf | Format-Table Name,MemberOf -Auto

    Im Anschluss müsste jetzt "MemberOf" eines jeden Benutzers extrahiert werden um die lesbarkeit und übersichtlichkeit zu verbessen aber vielleicht ein alternativer Ansatz.

    Gruß

    Samstag, 30. Juni 2012 17:49