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.