it-swarm-vi.tech

Dòng lệnh để liệt kê người dùng trong nhóm Windows Active Directory?

Có cách nào để liệt kê tất cả người dùng trong một nhóm Active Directory cụ thể không?

Tôi có thể biết ai thuộc nhóm bằng cách truy cập Quản lý máy tính -> Người dùng/nhóm cục bộ -> Nhóm và nhấp đúp vào nhóm .

Tôi chỉ cần một cách dòng lệnh để lấy dữ liệu, vì vậy tôi có thể thực hiện một số tác vụ tự động khác.

138
Flyer

thử

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

Đây là một cách khác từ lệnh Prompt, không chắc là có thể tự động hóa như thế nào vì bạn sẽ phải phân tích cú pháp đầu ra:

Nếu nhóm là "nhóm bảo mật toàn cầu":

net group <your_groupname> /domain

Nếu bạn đang tìm kiếm "nhóm bảo mật cục bộ miền":

net localgroup <your_groupname> /domain
243
asdasddfg

Đây là một phiên bản của lệnh DS tôi thấy hữu ích hơn, đặc biệt là nếu bạn có cấu trúc OU phức tạp và không nhất thiết phải biết tên phân biệt đầy đủ của nhóm.

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

hoặc nếu bạn biết CN của nhóm, thường giống với ID SAM, được trích dẫn trong trường hợp có khoảng trắng trong tên:

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

Như đã nêu trong các bình luận, theo mặc định, các lệnh DS * (dsquery, dsget, dsadd, dsrm) chỉ khả dụng trên Bộ điều khiển miền. Tuy nhiên, bạn có thể cài đặt gói Công cụ quản trị từ Công cụ hỗ trợ trên phương tiện cài đặt Windows Server hoặc tải xuống từ trang Tải xuống của Microsoft.

Bạn cũng có thể thực hiện các truy vấn này bằng PowerShell. PowerShell đã có sẵn như là một tính năng có thể cài đặt cho Server 2008, 2008 R2 và Windows 7, nhưng bạn sẽ cần tải xuống WinRM Framework để cài đặt nó trên XP hoặc Vista.

Để có quyền truy cập vào bất kỳ lệnh ghép ngắn cụ thể nào của AD trong PowerShell, bạn sẽ [~ # ~] cũng [~ # ~] cần thực hiện ít nhất một trong các cài đặt sau:

49
Ryan Fisher

Để biết giải pháp PowerShell không yêu cầu bổ trợ Quest AD, hãy thử cách sau

Import-Module ActiveDirectory

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

Điều này cũng sẽ liệt kê các nhóm lồng nhau. Nếu bạn không muốn làm như vậy, hãy xóa công tắc - đệ quy.

25
pk.

Một cách rất dễ dàng hoạt động trên máy chủ và máy khách:

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

Trả về 1 nếu người dùng nằm trong nhóm YOUGROUPNAME, người khác sẽ trả về 0

Sau đó, bạn có thể sử dụng giá trị% ERRORLEVEL% (0 nếu người dùng trong nhóm, 1 nếu không) thích

IF %ERRORLEVEL%==0 Net Use %LOGONSERVER%\YOURGROUPSHARE
17
deajan

Sử dụng Shell quản lý ActiveRoles miễn phí của PowerShell và Quest Software cho Active Directory, bạn có thể sử dụng:

(Get-QADgroup "Tên nhóm"). Thành viên

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

10
Gordon Bell

Các câu trả lời ở đây bằng cách sử dụng dsgetdsquery sẽ chỉ hoạt động trên các phiên bản máy chủ của Windows vì các lệnh đó không được gửi trên các phiên bản Windows khác (ví dụ: Windows 7). Trên các máy không có các lệnh đó, bạn có thể nhận thông tin bạn muốn bằng cách sử dụng lệnh AdFind .

Đây là một truy vấn ví dụ để có được thành viên nhóm:

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

Làm thế nào để liệt kê các nhóm và người dùng địa phương?

Sử dụng tập lệnh powershell sau để liệt kê các nhóm cục bộ và thành viên của các nhóm đó.

$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
}

Sao chép văn bản trên vào notepad và lưu thành filename.ps1. Sau đó chạy tệp. Tôi nên hiển thị Nhóm và Người dùng trong mỗi nhóm hoặc bạn chỉ có thể chạy nó từ powershell.

4
Sysadmin

Để hiển thị các thành viên của UserGroup1 thử:

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