Liste der AD-Gruppen abrufen, denen ein Benutzer angehört


52

Angenommen, ich habe die Benutzer-ID eines Benutzers in Active Directory. Ich möchte eine Liste aller AD-Gruppen erhalten, in denen dieser Benutzer derzeit Mitglied ist. Wie kann ich das von der Windows-Befehlszeile aus tun?

Ich habe Folgendes versucht:

dsget user "DC=jxd123" -memberof

Error:

dsquery failed:'-memberof' is an unknown parameter.
type dsquery /? for help.

3
Sie werden sicherlich keinen Fehler für dsquery bekommen, wenn Sie dsget ausführen. Kopieren und Einfügen fehlgeschlagen?
Mfinni

Zu Ihrer Information, fand die gleiche Frage auf StackOverflow mit ein paar weiteren Antworten.
Nic

Ich habe nicht genug Ruf, um zu antworten, aber wenn Sie Powershell verwenden, können Sie Folgendes schreiben: Get-ADPrincipalGroupMembership Benutzername | Namen auswählen
Avi Parshan

Antworten:


33

Sie können dies in PowerShell ganz einfach tun. Ich bin mir sicher, dass Sie dies auch mit den ds-Tools tun können, aber sie sind alt und verkrustet und PowerShell sollte heutzutage für alles verwendet werden, was möglich ist.

Import-Module ActiveDirectory
(Get-ADUser userName –Properties MemberOf | Select-Object MemberOf).MemberOf

Kürzere Version

(Get-ADUser userName –Properties MemberOf).MemberOf

Ich habe Powershell heruntergeladen und habe jetzt eine * .msu-Datei. Wie installiere ich es mit der * .msu-Datei?
MacGyver

Auf welchem ​​Betriebssystem arbeiten Sie? PowerShell ist in allen neueren Versionen als XP integriert und für XP als optionales Windows-Update verfügbar.
MDMarra

Windows XP .. Meine Firma ist langsam: - \
MacGyver

Dann haben Sie das falsche Installationsprogramm heruntergeladen. Nur ein Köpfchen entfernt endet die XP-Unterstützung in knapp einem Jahr. Holen Sie sich Upgrades in Bewegung! microsoft.com/en-us/windows/endofsupport.aspx
MDMarra

1
Get-ADPrincipalGroupMembershipist eine andere Möglichkeit, dies in PowerShell zu tun.
Nic

83

Oder mit dem net user Befehl ...

net user /domain username

3
Ich mag die Einfachheit, die einige der "alten" DOS-Befehle bieten. Und sie waren schon immer dabei, auch wenn PoSH nicht auf einem alten Computer geladen ist, hilft DOS! Danke, dass du das gepostet hast.
Jeff Moden

3
Dies gibt nur explizite, aber nicht implizite Gruppenmitgliedschaften zurück.
Elias Probst

11
Glatter Befehl, ABER die Gruppennamen in der Ausgabe werden auf 21 Zeichen gekürzt ... :-(
t0r0X

1
Ja, es gibt Einschränkungen. Verschachtelte Gruppenmitgliedschaften werden nicht angezeigt, und Sie haben Recht, die Ausgabe wird abgeschnitten. Letzteres hatte ich freilich nicht bedacht.
Jack

Hat super funktioniert, aber warum sollte es abgeschnitten werden? Gibt es eine Konfiguration / einen Parameter, der für den vollständigen Gruppennamen hinzugefügt werden kann?
ThinkCode

36

Einzelne Zeile, keine Module erforderlich, verwendet den aktuell angemeldeten Benutzer $ ($ env: username), wird von anderen Windows-Computern ausgeführt:

(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf

Qudos zu diesem VBS / Powershell-Artikel: http://technet.microsoft.com/en-us/library/ff730963.aspx


2
Sehr gute Lösung, die einzige, die bei mir funktioniert hat, ohne zusätzliche Software zu installieren! Vielen Dank!
t0r0X

2
+1 für die Arbeit an einem eingeschränkten System ohne zusätzliche Software!
Saustrup


8

Power Shell:

Get-ADPrincipalGroupMembership -Identity jdoe | Format-Table -Property name

7

Wenn Sie Ihre eigenen Gruppen sehen müssen, gibt es whoami /groups:

Zeigt die Benutzergruppen an, zu denen der aktuelle Benutzer gehört.

Der Vorteil dieses Befehls gegenüber net user /domain usernameist, dass implizite Gruppenmitgliedschaften auch mit angezeigt werden whoami.


Beste Lösung. Upvoted. Kurz und bündig. Schneidet nicht ab. Persönlich gefällt mir das LIST-Format am besten whoami /groups /fo list, weil es am einfachsten mit dem Auge zu lesen ist.
peterh

6

Ein weiterer Ansatz: Ein PowerShell-Skript, das alle impliziten Gruppenmitgliedschaften aus dem Windows-Kontotoken auflistet. Funktioniert auf einem eingeschränkten System.

$token = [System.Security.Principal.WindowsIdentity]::GetCurrent() 
ForEach($group in $token.Groups){
    $group.Translate([System.Security.Principal.NTAccount])
}

3
dsquery user -samid "user id" | dsget user -memberof > userid_memberof.txt

2
$ADUser = Read-Host "Provide the AD User account"
Get-ADPrincipalGroupMembership -Identity $ADUser | Sort-Object name | Format-Table -Expand name


1

Diese PowerShell-Version gibt nur die AD-Gruppennamen und nicht den DN der Gruppe zurück. Die Ausgabe von 'select-object' kann problemlos an eine CSV- oder Testdatei weitergeleitet werden.

(Get-ADUser ExampleUser –Properties MemberOf).memberof | Get-ADGroup | Select-Object name


0

Powershell, gibt eine schöne und saubere Ausgabe.

(get-aduser USER -Properties MemberOf | select MemberOf).MemberOf | % {$_.split(",")[0].replace("CN=","")}

0

Hier ist eine Lösung, die alle Domains unter der angegebenen Domain durchsucht (unter der Voraussetzung, dass für jede Domain die richtige Berechtigung vorliegt):

# provide the logon name here:
$user="alice"
$allGroups=@()

foreach ( $d in (Get-ADForest example.net).domains ) { Write-Output "Looking up $user in domain $d"; $allGroups += Get-ADPrincipalGroupMembership $user -ResourceContextServer $d }

$allGroups | ft name,GroupScope,distinguishedName -AutoSize

Verwenden von Get-ADPrincipalGroupMembership


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.