Unsere FAQ bietet ein paar Artikel, die die Mitglieder von Gruppen ausgeben. Spannend ist aber auch die Frage: In welchen Gruppen ist ein Benutzer denn Mitglied? Auch dafür gibt es eine Reihe von Möglichkeiten zur Ausgabe. Hier eine kleine Auswahl (wie immer ohne Anspruch auf Vollständigkeit).
Grundsätzlich sind alle Gruppenmitgliedschaften in dem AD-Feld “memberOf” eines Benutzers gespeichert. Dabei handelt es sich um einen “Backlink”, d.h. die eigentliche Mitgliedschaft steht bei der Gruppe, und die Angabe beim Benutzerobjejt dient nur dem schnellen Nachschlagen.
- Seit Windows Server 2003 gibt es die “ds*-Tools” zur Arbeit mit AD auf der Kommandozeile. Sie stehen auch auf einem Client zur Verfügung, wenn man das Adminpak (XP) bzw. die RSAT (Vista/7) installiert. Das Tool “dsget” gibt Auskunft über Gruppenmitgliedschaften eines Users:
dsget user „CN=Ute Meier,OU=Benutzer,DC=faq-o-matic,DC=net“ –memberOf
Etwas hinderlich ist, dass dsget die Angabe des Usernanens als DN erwartet, also in LDAP-Notation. Hier kann man sich behelfen, indem man das Werkzeug “dsquery” voransetzt und dort z.B. nach dem Anmeldenamen sucht:
dsquery user -samid UTE | dsget user –memberOf - In allen Windows-Versionen seit NT funktioniert auch das alte “net user”-Kommando. Es gibt mehr Informationen zurück als nur die Gruppenmitgliedschaft, reicht aber in manchen Situationen aus.
net user UTE /domain - Das Tool “csvde.exe” eignet sich leider nur begrenzt für diese Art der Auswertung. Es hat nämlich eine nicht dokumentierte Begrenzung: Zwar gibt es das Feld “memberOf” durchaus zurück, zeigt aber nur dann die Werte dafür an, wenn sie eine gewisse Länge nicht überschreiten. So lässt es sich nur einsetzen, wenn es nicht mehr als etwa acht Gruppenmitgliedschaften gibt. Man kann aber tricksen und die Abfrage “hintenrum” gestalten:
csvde -f gruppe.txt -r „(&(objectClass=group)(member=CN=Ute Meier,OU=Benutzer,DC=faq-o-matic,DC=net))“ -l name,description
Dies gibt alle Gruppen aus, in denen das Benutzerobjekt in der Mitgliedsliste steht. - Das ebenfalls ältere ldifde.exe gibt die Mitglieder auch direkt aus “memberOf” zurück, erfordert also nicht den Umweg. Dafür ist die Ausgabe für Menschen schwerer nutzbar.
ldifde -f gruppen.txt -r „(samAccountName=UTE)“ -l memberOf - Recht komfortabel stellt sich die Ausgabe von Carmen dar. Die Ergebnistabelle lässt sich damit speichern und etwa in Excel weiterbearbeiten.
http://www.faq-o-matic.net/2004/10/20/carmen-mit-sql-das-ad-abfragen/
SELECT name, memberOf FROM ‚LDAP://DC=faq-o-matic,DC=net‘ WHERE samAccountName=’UTE‘ - Auch AdFind gibt diese Information natürlich gern preis:
adfind -default -f „(sAMAccountName=UTE)“ name memberOf - Und in der PowerShell 2.0 mit geladenem Active-Directory-Modul geht es z.B. so:
Get-ADUser -Filter { Name -Like „*“ } -SearchBase „OU=Benutzer,DC=domain,DC=tld“ | ForEach-Object { „“ ; $_.SamAccountName ; „—“ ; Get-ADPrincipalGroupMembership $_ | Select-Object SamAccountName }
http://faq-o-matic.net/?p=2511