Pertanyaan Baris perintah untuk daftar pengguna di grup Windows Active Directory?


Apakah ada cara baris perintah untuk daftar semua pengguna dalam grup Active Directory tertentu?

Saya bisa melihat siapa yang ada di grup dengan pergi Kelola Komputer -> Pengguna / Grup Lokal -> Grup dan klik ganda pada grup.

Saya hanya perlu cara baris perintah untuk mengambil data, jadi saya bisa melakukan beberapa tugas otomatis lainnya.


123
2017-08-03 17:19






Jawaban:


mencoba

dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members

37
2017-08-03 17:22



Anda mungkin perlu melakukan sedikit lebih banyak untuk menyelesaikan anggota dan menggandakan anggota dalam grup bertingkat. - duffbeer703
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members -expand memberi Anda anggota dalam grup bertingkat, meskipun mungkin tidak membantu dengan duplikat, dan memberi Anda string permintaan AD lengkap untuk anggota, bukan hanya CN mereka. - jonnybot
Perintah tidak ditemukan di Win7 SP1. Saya kira Anda perlu menginstal RSAT? - Iszi
'dsget' tidak dikenal sebagai perintah internal atau eksternal, dll. - adolf garlic
@adolfgarlic - stackoverflow.com/questions/8514599/… - bchilders


Berikut adalah cara lain dari command prompt, tidak yakin seberapa automatable karena Anda harus mengurai output:

Jika grup adalah "grup keamanan global":

net group <your_groupname> /domain

Jika Anda mencari "grup keamanan lokal domain":

net localgroup <your_groupname> /domain

207
2018-01-04 20:11



tidak yakin mengapa ini downvoted ... output mungkin memerlukan sedikit parsing, tetapi memiliki keuntungan tergantung hanya pada utilitas yang merupakan bagian dari pemasangan windows dasar. - G-Wiz
Tetapi adakah cara di sekitar nama grup yang terpotong? - deed02392
Ini hebat! Bekerja memperlakukan. - WOPR
Perhatikan bahwa ini bukan rekursif dan tidak mencantumkan grup yang ada dalam grup. Tidak sangat membantu jika Anda memiliki grup bertingkat atau hierarkis. - Mark
Ini bekerja dengan sempurna untuk saya (dan berjalan dengan baik seiring dengan net user /domain). Terima kasih! - xan


Berikut ini adalah versi dari perintah ds yang saya temukan lebih bermanfaat, terutama jika Anda memiliki struktur OU yang kompleks dan tidak perlu mengetahui nama grup yang lengkap.

dsquery group -samid "Group_SAM_Account_Name" | dsget group -members -expand

atau jika Anda tahu CN grup, biasanya sama dengan SAM ID, dikutip jika ada spasi di nama:

dsquery group -name "Group Account Name" | dsget group -members -expand

Sebagaimana dinyatakan dalam komentar, secara default perintah ds * (dsquery, dsget, dsadd, dsrm) hanya tersedia pada Kontroler Domain. Namun, Anda dapat menginstal paket Alat Admin dari Alat Dukungan di media instalasi Windows Server atau unduh itu dari situs Unduh Microsoft.

Anda juga dapat melakukan kueri ini menggunakan PowerShell. PowerShell sudah tersedia sebagai fitur yang dapat diinstal untuk Server 2008, 2008 R2, dan Windows 7, tetapi Anda harus melakukannya unduh Kerangka WinRM untuk menginstalnya di XP atau Vista.

Untuk mendapatkan akses ke setiap cmdlet AD-spesifik di PowerShell Anda akan JUGA harus melakukan setidaknya salah satu dari pemasangan berikut:


48
2017-08-03 19:09



Saya menggunakan kueri pertama setiap saat - Jim B
Sadarilah bahwa Anda harus menjalankan perintah ini pada pengontrol domain. - skolima
Kamu TIDAK harus menjalankan perintah ini pada Pengontrol Domain. Namun, kamu MELAKUKAN perlu menginstal Paket Dukungan Admin .msi yang disertakan dalam Alat Dukungan pada CDROM Windows 2003 Server. Atau unduh dari microsoft.com/downloads/en/… - Ryan Fisher


Untuk solusi PowerShell yang tidak memerlukan add-in Pencarian AD, coba yang berikut ini

Import-Module ActiveDirectory

Get-ADGroupMember "Domain Admins" -recursive | Select-Object name

Ini akan menyebutkan kelompok bertingkat juga. Jika Anda tidak ingin melakukannya, hapus -rekursif beralih.


23
2018-03-24 16:41



Anda benar bahwa modul ActiveDirectory tidak memerlukan snap-in Quest ActiveRoles AD, tetapi itu mengharuskan Anda memiliki alat RSAT diinstal dan bahwa AD Anda memiliki setidaknya satu DC dengan Layanan Web Direktori Aktif (untuk 2008 R2) atau Layanan Gateway Manajemen Direktori Aktif (untuk tahun 2003, DC 2008) diinstal. Lihat jawaban saya di atas untuk detail dan tautan. - Ryan Fisher


Cara yang sangat mudah yang berfungsi pada server dan klien:

NET GROUP "YOURGROUPNAME" /DOMAIN | find /I /C "%USERNAME%"

Mengembalikan 1 jika pengguna dalam grup YOURGROUPNAME, yang lain akan mengembalikan 0

Anda kemudian dapat menggunakan nilai% ERRORLEVEL% (0 jika pengguna dalam grup, 1 jika tidak) suka

IF %ERRORLEVEL%==0 NET USE %LOGONSERVER%\YOURGROUPSHARE

14
2017-10-08 09:37



Perintah "net group" hanya mencari domain (atau pohon domain) tempat komputer tersebut bergabung. Alternatif yang lebih modern adalah: whoami /groups | find /I /C "YOURGROUPNAME" - DavisNT


Menggunakan Shell Manajemen ActiveRoles PowerShell dan Quest Software Gratis untuk Active Directory, Anda dapat menggunakan:

(Dapatkan-QADGroup "GroupName"). Anggota

http://www.quest.com/powershell/activeroles-server.aspx


10
2017-08-03 20:51



Juga: Get-QADGroupMember 'GroupName' - Gordon Bell


Jawabannya di sini menggunakan dsgetdan dsquery hanya akan berfungsi pada versi server Windows karena perintah tersebut tidak dikirimkan pada versi Windows lainnya (misalnya Windows 7). Pada mesin tanpa perintah tersebut Anda bisa mendapatkan informasi yang Anda inginkan menggunakan Perintah AdFind.

Berikut contoh kueri untuk mendapatkan keanggotaan grup:

AdFind.exe -default -f name="Domain Admins" member -list

7
2018-03-31 10:34



ADFind.exe adalah alat pihak ketiga yang harus Anda instal. Perintah ds * dapat diinstal melalui paket Alat Admin. - Ryan Fisher


Bagaimana cara mendaftar grup dan pengguna lokal?

Gunakan skrip powershell berikut untuk mencantumkan grup lokal dan anggota grup tersebut.

$server="YourServerName"
$computer = [ADSI]"WinNT://$server,computer"

$computer.psbase.children | where { 

$_.psbase.schemaClassName -eq 'group' } | foreach {
    write-host $_.name
    write-host "------"
    $group =[ADSI]$_.psbase.Path
    $group.psbase.Invoke("Members") | foreach {
$_.GetType().InvokeMember("Name", 'GetProperty', 

$null, $_, $null)}
    write-host
}

Salin teks di atas ke notepad dan simpan sebagai filename.ps1. Kemudian jalankan file. Saya harus menampilkan Grup dan Pengguna di setiap grup, atau Anda bisa menjalankan ini dari PowerShell.


4
2018-01-14 19:12



Saya mendapat, cmdlet ForEach-Object at command pipeline position 1. Supply values for the following parameters: dan kemudian meminta masukan, Process[0] - Mike S


Untuk tampilan anggota UserGroup1 mencoba:

dsquery group -name UserGroup1 | dsget group -members | dsget user -display

3
2017-10-10 00:54



Mungkin ingin menunjukkan apa utilitas CLI Anda akan menggunakan ini. Saya tidak berpikir itu akan bekerja terlalu baik dari cmd, untuk beberapa alasan. - HopelessN00b
@ HopelessN00b: ini berfungsi di cmd - Pete
@Pete Newp! dsget failed:'Target object for this command' is missing. - HopelessN00b
@ HopelessN00b: Saya mendapat kesalahan jika UserGroup1 tidak ada, coba sesuatu seperti "Akuntansi *" - Pete