Uzyskaj listę grup AD, których członkiem jest użytkownik


52

Załóżmy, że mam identyfikator użytkownika w usłudze Active Directory. Chciałbym uzyskać listę wszystkich grup AD, w których użytkownik jest obecnie członkiem. Jak mogę to zrobić z wiersza poleceń systemu Windows?

Próbowałem następujące:

dsget user "DC=jxd123" -memberof

Błąd:

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

3
Na pewno nie pojawi się błąd dla dsquery podczas wykonywania dsget. Błąd kopiowania i wklejania?
mfinni

Do Twojej wiadomości znalazłem to samo pytanie na StackOverflow z kilkoma dodatkowymi odpowiedziami.
Nic.

Nie mam wystarczającej reputacji, aby odpowiedzieć, ale zakładając, że używasz programu PowerShell, możesz napisać to: Get-ADPrincipalGroupMembership nazwa użytkownika | wybierz imię
Avi Parshan

Odpowiedzi:


33

Możesz to zrobić w PowerShell dość łatwo. Jestem pewien, że możesz to zrobić również za pomocą narzędzi ds, ale są one stare i chrupiące, a PowerShell powinien być używany do wszystkiego, co możliwe w dzisiejszych czasach.

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

Krótsza wersja

(Get-ADUser userName –Properties MemberOf).MemberOf

Pobrałem Powershell, a teraz mam plik * .msu. Jak zainstalować go za pomocą pliku * .msu?
MacGyver,

Z jakiego systemu operacyjnego korzystasz? PowerShell jest wbudowany w coś nowszego niż XP i jest dostępny dla XP jako opcjonalna Windows Update.
MDMarra,

Windows XP .. Moja firma jest powolna: - \
MacGyver

Następnie pobrałeś niewłaściwy instalator. Ponadto, tylko jeden na jednego, wsparcie XP kończy się za niecały rok. Aktualizacje w ruchu! microsoft.com/en-us/windows/endofsupport.aspx
MDMarra

1
Get-ADPrincipalGroupMembershipjest innym sposobem na to w PowerShell.
Nic.

83

Lub za pomocą polecenia użytkownika netto ...

net user /domain username

3
Uwielbiam prostotę, jaką oferują niektóre „stare” polecenia DOS. I zawsze tam byli, więc nawet jeśli nie masz PoSH załadowanego na starej maszynie, DOS przychodzi z pomocą! Dzięki za opublikowanie tego.
Jeff Moden

3
Zwróci tylko jawne, ale nie dorozumiane członkostwo w grupie.
Elias Probst

11
Zręczne polecenie, ALE, nazwy grup na wyjściu są obcięte do 21 znaków ... :-(
t0r0X 16'15

1
Tak, są ograniczenia. Członkostwa w grupach zagnieżdżonych nie są wyświetlane i masz rację, wyniki są obcinane. Trzeba przyznać, że nie zastanawiałem się nad tym drugim.
Jack

Działało świetnie, ale dlaczego miałoby zostać obcięte? Czy istnieje parametr config / parametr, który można dodać dla pełnej nazwy grupy?
ThinkCode,

36

Pojedyncza linia, nie wymaga modułów, używa bieżącego zalogowanego użytkownika $ ($ env: nazwa użytkownika), działa z innych komputerów z systemem Windows:

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

Qudos do tego artykułu vbs / powershell: http://technet.microsoft.com/en-us/library/ff730963.aspx


2
Bardzo dobre rozwiązanie, jedyne, które działało dla mnie bez instalowania dodatkowego oprogramowania! Dzięki!
t0r0X

2
+1 za pracę w systemie z ograniczonym dostępem bez żadnego dodatkowego oprogramowania!
Saustrup,


8

PowerShell:

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

7

Jeśli chcesz zobaczyć własne grupy, możesz whoami /groups:

Wyświetla grupy użytkowników, do których należy bieżący użytkownik.

Zaletą tego polecenia net user /domain usernamejest to, że wyświetlane są również niejawne członkostwa w grupach whoami.


Najlepsze rozwiązanie Pozytywne. Krótkie i słodkie. Nie obcina się. Osobiście najbardziej podoba mi się format LISTY, tzn. whoami /groups /fo listPonieważ najłatwiej jest go czytać gołym okiem.
peterh

6

Inne podejście: skrypt PowerShell, który wyświetla wszystkie niejawne członkostwa w grupach z tokena konta Windows. Działa w systemie z ograniczeniami.

$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

Ta wersja programu PowerShell zwraca tylko nazwy grup AD, a nie nazwę wyróżniającą grupy. Dane wyjściowe „select-object” można łatwo potokować do pliku CSV lub pliku testowego.

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


0

PowerShell, daje ładne i czyste wyjście.

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

0

Oto rozwiązanie przeszukujące wszystkie domeny w danej domenie (zakładając odpowiednie uprawnienia dla każdej domeny):

# 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

Korzystanie z Get-ADPrincipalGroupMembership


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.