2014-05-08 15 views
6

Ich versuche, alle Gruppen zu bekommen ein Benutzer Mitglied, auch die verschachtelten Einsen (recusively), in Powershell Ich verwende:Wie erhalten Sie alle AD-Benutzergruppen (rekursiv) mit Powershell oder anderen Tools?

(Get-ADUser <username> -Properties MemberOf | Select-Object MemberOf).MemberOf 

Aber es gibt nur die Gruppen wird der Benutzer eine „direkte "Mitglied, wie Sie bekommen, wenn Sie die AD-Benutzerkonsole verwenden. Eine einzelne Liste ALLER Gruppen ist sehr hilfreich, wie die Ausgabe von "gpresult -r", wo ALLE Gruppen angezeigt werden, in denen der Benutzer Mitglied ist.

Gibt es eine Möglichkeit, es von jedem AD-Benutzer zu bekommen? (Braucht nicht ausschließlich in Powershell zu sein, vielleicht ein anderes Werkzeug Theres, das weiß ich nicht noch)

Antwort

19

können Sie verwenden die LDAP_MATCHING_RULE_IN_CHAIN:

Get-ADGroup -LDAPFilter "(member:1.2.840.113556.1.4.1941:=CN=User,CN=USers,DC=x)" 

Sie können es verwenden anywahere, dass Sie einen LDAP-Filter verwenden können.

Beispiel:

$username = 'myUsername' 
$dn = (Get-ADUser $username).DistinguishedName 
Get-ADGroup -LDAPFilter ("(member:1.2.840.113556.1.4.1941:={0})" -f $dn) | select -expand Name | sort Name 
+1

ich nur fassungslos bin, wie groß das ist, und wenn ich könnte +1 das mehr als einmal ich würde. Ich habe gerade die entsprechende Dokumentation in dem von Ihnen bereitgestellten Link gelesen und das ist wirklich wertvolles Wissen für jeden, der mit Powershell, AD und Gruppen/Mitgliedern zu tun hat. – TheMadTechnician

+0

Hinweis: Dies scheint auf eine Suchbasis mit nur einer Domäne beschränkt zu sein. dh wenn der Benutzer Mitglied einer Gruppe in einer anderen Domäne ist oder eine der Gruppen selbst Mitglied einer Gruppe in einer anderen Domäne ist, werden diejenigen auf der anderen Domäne nicht angezeigt/aus der Struktur ausgeschlossen (d. h auch wenn die Gruppen in der anderen Domäne Mitglieder von Gruppen auf der ursprünglichen Domäne sind). – JohnLBevan

+0

@Joseph Alcorn, eine Idee, warum es mir nicht die Gruppe "Domain Users" zeigt? Wenn ich 'Get-ADPrincipalGroupMembership myUser' verwende, werden mir die Gruppen des Benutzers angezeigt (dazwischen auch" Domain Users "). Wenn ich suche mit: '$ dn = (Get-ADUser" myUser "). DistinguishedName Get-ADGroup -LDAPFilter (" (member: 1.2.840.113556.1.4.1941: = {0}) "-f $ dn) | select -expand Name | Sortierung Name "ignoriert die Gruppe" Domänenbenutzer ", zeigt mir aber alle anderen Gruppen (auch rekursiv) – E235

1

Oder können Sie mit dem constructed attributetokenGroups und eine Basis-scoped Abfrage:

$tokenGroups = Get-ADUser -SearchScope Base -SearchBase '<account-distinguishedName>' ` 
-LDAPFilter '(objectClass=user)' -Properties tokenGroups | Select-Object ` 
-ExpandProperty tokenGroups | Select-Object -ExpandProperty Value