Dapatkan daftar grup AD yang menjadi anggota

52

Misalkan saya memiliki id pengguna dari pengguna di Active Directory. Saya ingin mendapatkan daftar semua grup AD yang saat itu menjadi anggotanya. Bagaimana saya bisa melakukan ini dari baris perintah Windows?

Saya sudah mencoba yang berikut ini:

dsget user "DC=jxd123" -memberof

Kesalahan:

dsquery failed:'-memberof' is an unknown parameter.
type dsquery /? for help.
MacGyver
sumber
3
Anda tentu tidak akan mendapatkan kesalahan untuk dsquery ketika Anda menjalankan dsget. Salin & Rekat gagal?
mfinni
FYI, menemukan pertanyaan yang sama di StackOverflow dengan beberapa jawaban lagi.
Nic
Saya tidak memiliki reputasi yang cukup untuk menjawab, tetapi dengan asumsi Anda menggunakan PowerShell, Anda dapat menulis ini: Get-ADPrincipalGroupMembership username | pilih nama
Avi Parshan

Jawaban:

33

Anda dapat melakukan ini di PowerShell dengan mudah. Saya yakin Anda bisa melakukannya dengan alat ds juga, tapi mereka sudah tua dan kasar dan PowerShell harus digunakan untuk segala kemungkinan saat ini.

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

Versi lebih pendek

(Get-ADUser userName –Properties MemberOf).MemberOf
MDMarra
sumber
Saya mengunduh Powershell, dan sekarang memiliki file * .msu. Bagaimana cara menginstalnya menggunakan file * .msu?
MacGyver
Sistem operasi apa yang Anda pakai? PowerShell dibangun menjadi sesuatu yang lebih baru dari XP dan tersedia untuk XP sebagai Pembaruan Windows opsional.
MDMarra
Windows XP .. Perusahaan saya lambat: - \
MacGyver
Kemudian Anda mengunduh pemasang yang salah. Juga, hanya kepala, dukungan XP berakhir hanya di bawah satu tahun. Dapatkan peningkatan versi bergerak! microsoft.com/en-us/windows/endofsupport.aspx
MDMarra
1
Get-ADPrincipalGroupMembershipadalah cara lain untuk melakukan ini di PowerShell.
Nic
83

Atau dengan perintah pengguna net ...

net user /domain username
Mendongkrak
sumber
3
Saya suka kesederhanaan yang ditawarkan oleh beberapa perintah DOS "lama". Dan, mereka selalu ada di sana sehingga bahkan jika Anda tidak memiliki PoSH dimuat pada mesin lama, DOS datang untuk menyelamatkan! Terima kasih telah memposting ini.
Jeff Moden
3
Ini hanya akan menghasilkan keanggotaan grup eksplisit, tetapi tidak implisit.
Elias Probst
11
Perintah apik, TAPI, nama-nama grup dalam output terpotong menjadi 21 karakter ... :-(
t0r0X
1
Ya, ada batasannya. Keanggotaan grup bersarang tidak ditampilkan dan Anda benar, hasilnya terpotong. Memang, saya belum mempertimbangkan yang terakhir.
Jack
Bekerja dengan baik tetapi mengapa itu akan dipotong? Apakah ada konfigurasi / parameter yang dapat ditambahkan untuk nama grup lengkap?
ThinkCode
36

Baris tunggal, tanpa modul yang diperlukan, menggunakan $ login pengguna saat ini ($ env: nama pengguna), berjalan dari mesin windows lain:

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

Qudos untuk artikel vbs / powershell ini: http://technet.microsoft.com/en-us/library/ff730963.aspx

Kano
sumber
2
Solusi yang sangat bagus, satu-satunya yang bekerja untuk saya tanpa menginstal softwar tambahan! Terima kasih!
t0r0X
2
+1 untuk bekerja pada sistem terbatas tanpa perangkat lunak tambahan!
Saustrup
8

PowerShell:

Get-ADPrincipalGroupMembership -Identity jdoe | Format-Table -Property name
AbeNice
sumber
7

Jika Anda perlu melihat grup Anda sendiri, ada whoami /groups:

Menampilkan grup pengguna yang menjadi milik pengguna saat ini.

Keuntungan dari perintah ini net user /domain usernameadalah bahwa keanggotaan grup implisit juga ditampilkan dengan whoami.

Dmitry Grigoryev
sumber
Solusi terbaik. Terpilih. Pendek dan manis. Tidak terpotong. Secara pribadi saya paling suka format daftar, yaitu whoami /groups /fo list, karena itu adalah yang paling mudah untuk dibaca dengan mata.
peterh
6

Pendekatan lain: skrip PowerShell yang mencantumkan semua keanggotaan grup implisit dari token akun Windows. Bekerja pada sistem terbatas.

$token = [System.Security.Principal.WindowsIdentity]::GetCurrent() 
ForEach($group in $token.Groups){
    $group.Translate([System.Security.Principal.NTAccount])
}
ofthelit
sumber
3
dsquery user -samid "user id" | dsget user -memberof > userid_memberof.txt
Vibhat
sumber
2
$ADUser = Read-Host "Provide the AD User account"
Get-ADPrincipalGroupMembership -Identity $ADUser | Sort-Object name | Format-Table -Expand name
Bill Ou
sumber
2

adfind adalah alat hebat untuk hal semacam ini. Ini adalah alat gratis dari MVP Joe Richards

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

Anda dapat menggunakan salah satu kekurangan

adfind -sc u:username memberof
Mike Kline
sumber
1

Versi PowerShell ini hanya mengembalikan nama grup AD, bukan DN grup. Output 'select-object' dapat dengan mudah disalurkan ke CSV atau file uji.

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

Pemimpin Nicholas
sumber
0

Powershell, memberikan output yang bagus dan bersih.

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

Berikut solusi mencari semua domain di bawah domain yang diberikan (dengan asumsi izin yang sesuai untuk setiap domain):

# 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

Menggunakan Get-ADPrincipalGroupMembership

Thomas
sumber
-2

Coba ini:

gpresult -V /user blah
Andrew
sumber