Nhận danh sách các nhóm AD mà người dùng là thành viên của


52

Giả sử tôi có id người dùng của người dùng trong Active Directory. Tôi muốn có một danh sách tất cả các nhóm AD mà người dùng đó hiện đang là thành viên. Làm thế nào tôi có thể làm điều này từ dòng lệnh Windows?

Tôi đã thử như sau:

dsget user "DC=jxd123" -memberof

Lỗi:

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

3
Bạn chắc chắn sẽ không gặp lỗi cho DSquery khi bạn thực thi dsget. Sao chép & Dán thất bại?
mfinni

FYI, đã tìm thấy câu hỏi tương tự trên StackOverflow với một vài câu trả lời nữa.
Nic

Tôi không có đủ danh tiếng để trả lời, nhưng giả sử bạn đang sử dụng powershell, bạn có thể viết điều này: Get-ADPrincipalgroupMembership tên người dùng | chọn tên
Avi Parshan

Câu trả lời:


33

Bạn có thể làm điều này trong PowerShell khá dễ dàng. Tôi chắc chắn bạn cũng có thể làm điều đó với các công cụ DS, nhưng chúng đã cũ và thô sơ và PowerShell nên được sử dụng cho mọi thứ có thể hiện nay.

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

Phiên bản ngắn hơn

(Get-ADUser userName –Properties MemberOf).MemberOf

Tôi đã tải xuống Powershell và hiện có tệp * .msu. Làm cách nào để cài đặt nó bằng tệp * .msu?
MacGyver

Bạn đang dùng hệ điều hành nào? PowerShell được tích hợp vào mọi thứ mới hơn XP và có sẵn cho XP dưới dạng Windows Update tùy chọn.
MDMarra

Windows XP .. Công ty của tôi chậm: - \
MacGyver

Sau đó, bạn tải xuống trình cài đặt sai. Ngoài ra, chỉ cần hỗ trợ, XP sẽ kết thúc sau chưa đầy một năm. Nhận nâng cấp di chuyển! microsoft.com/en-us/windows/endofsupport.aspx
MDMarra

1
Get-ADPrincipalGroupMembershiplà một cách khác để làm điều này trong PowerShell.
Nic

83

Hoặc với lệnh người dùng mạng ...

net user /domain username

3
Tôi yêu sự đơn giản mà một số lệnh DOS "cũ" cung cấp. Và, họ đã luôn ở đó nên ngay cả khi bạn không tải PoSH trên một máy cũ, DOS sẽ giải cứu! Cảm ơn đã đăng bài này.
Jeff Moden

3
Điều này sẽ chỉ trả lại rõ ràng, nhưng không ẩn thành viên nhóm.
Elias Probst

11
Lệnh Slick, NHƯNG, tên nhóm trong đầu ra được cắt ngắn thành 21 ký tự ... :-(
t0r0X

1
Vâng, có những hạn chế. Tư cách thành viên nhóm lồng nhau không được hiển thị và bạn đúng, đầu ra bị cắt ngắn. Phải thừa nhận rằng, tôi đã không xem xét cái sau.
Jack

Làm việc tuyệt vời nhưng tại sao nó sẽ bị cắt ngắn? Có một cấu hình / tham số có thể được thêm cho tên nhóm đầy đủ?
ThinkCode 17/8/2016

36

Một dòng, không cần mô-đun, sử dụng người dùng đã đăng nhập hiện tại $ ($ env: tên người dùng), chạy từ các máy windows khác:

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

Qudos cho bài viết vbs / powershell này: http://technet.microsoft.com/en-us/l Library / ff730963.aspx


2
Giải pháp rất tốt, giải pháp duy nhất phù hợp với tôi mà không cần cài đặt thêm bất kỳ phần mềm nào! Cảm ơn!
t0r0X

2
+1 để làm việc trên một hệ thống bị hạn chế mà không cần bất kỳ phần mềm bổ sung nào!
Saustrup


8

PowerShell:

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

7

Nếu bạn cần xem các nhóm của riêng mình, có whoami /groups:

Hiển thị các nhóm người dùng mà người dùng hiện tại thuộc về.

Ưu điểm của lệnh net user /domain usernamenày là các thành viên nhóm ẩn cũng được hiển thị với whoami.


Giải pháp tốt nhất. Nâng cao. Ngắn và ngọt. Không cắt ngắn. Cá nhân tôi thích nhất định dạng LIST, tức là whoami /groups /fo listvì nó dễ đọc nhất bằng mắt.
peterh

6

Một cách tiếp cận khác: tập lệnh PowerShell liệt kê tất cả các thành viên nhóm ẩn từ mã thông báo tài khoản Windows. Hoạt động trên một hệ thống hạn chế.

$token = [System.Security.Principal.WindowsIdentity]::GetCurrent() 
ForEach($group in $token.Groups){
    $group.Translate([System.Security.Principal.NTAccount])
}


2
$ADUser = Read-Host "Provide the AD User account"
Get-ADPrincipalGroupMembership -Identity $ADUser | Sort-Object name | Format-Table -Expand name


1

Phiên bản PowerShell này chỉ trả về tên nhóm AD, thay vì DN của nhóm. Đầu ra 'select-object' có thể dễ dàng được chuyển sang tệp CSV hoặc tệp thử nghiệm.

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


0

Powershell, cho một đầu ra tốt đẹp và sạch sẽ.

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

0

Đây là một giải pháp tìm kiếm tất cả các tên miền trong tên miền nhất định (giả sử sự cho phép phù hợp cho từng tên miền):

# 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

Sử dụng Get-ADPrincipalgroupMembership


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.