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.
MacGyver
quelle
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
MDMarra
quelle
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
Jack
quelle
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

Canoas
quelle
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
AbeNice
quelle
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.

Dmitry Grigoryev
quelle
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])
}
ofthelit
quelle
3
dsquery user -samid "user id" | dsget user -memberof > userid_memberof.txt
Vibhat
quelle
2
$ADUser = Read-Host "Provide the AD User account"
Get-ADPrincipalGroupMembership -Identity $ADUser | Sort-Object name | Format-Table -Expand name
Bill Ou
quelle
2

adfind ist ein weiteres großartiges Tool für diese Art von Dingen. Es ist ein kostenloses Tool von MVP Joe Richards

http://www.joeware.net/freetools/tools/adfind/

Sie können eine der Abkürzungen verwenden

adfind -sc u:username memberof
Mike Kline
quelle
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

Nicholas Leader
quelle
0

Powershell, gibt eine schöne und saubere Ausgabe.

(get-aduser USER -Properties MemberOf | select MemberOf).MemberOf | % {$_.split(",")[0].replace("CN=","")}
Trbo
quelle
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

Thomas
quelle
-2

Versuche dies:

gpresult -V /user blah
Andrew
quelle