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.

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

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

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


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

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.


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])
}

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

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


0

Powershell, memberikan output yang bagus dan bersih.

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

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


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.