Windows Active Directory 그룹의 사용자를 나열하는 명령 줄?


136

특정 Active Directory 그룹의 모든 사용자를 나열하는 명령 줄 방법이 있습니까?

컴퓨터 관리 -> 로컬 사용자 / 그룹 -> 그룹으로 이동 하여 그룹 을 두 번 클릭하면 그룹에 누가 있는지 볼 수 있습니다 .

데이터를 검색하는 명령 줄 방법이 필요하므로 다른 자동 작업을 수행 할 수 있습니다.

답변:


37

시험

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

1
중첩 된 그룹에서 구성원 및 중복 구성원을 해결하려면 약간 더해야 할 수도 있습니다.
duffbeer703

1
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members -expand중복 그룹에 도움이되지는 않지만 중첩 된 그룹의 구성원을 가져오고 CN뿐만 아니라 구성원에 대한 전체 AD 쿼리 문자열을 제공합니다.
jonnybot

2
Win7 SP1에서 명령을 찾을 수 없습니다. RSAT를 설치해야한다고 생각하십니까?
Iszi

11
'dsget'은 내부 또는 외부 명령 등으로 인식되지 않습니다.
adolf garlic


237

다음은 명령 프롬프트에서 다른 방법입니다. 출력을 구문 분석해야하므로 자동화 방법이 확실하지 않습니다.

그룹이 "글로벌 보안 그룹"인 경우 :

net group <your_groupname> /domain

"도메인 로컬 보안 그룹"을 찾고있는 경우 :

net localgroup <your_groupname> /domain

23
이것이 다운 보트 된 이유를 모르는 경우 ... 출력에 약간의 구문 분석이 필요할 수 있지만 기본 Windows 설치의 일부인 유틸리티에만 의존 할 수 있다는 장점이 있습니다.
G-Wiz

2
그러나 잘린 그룹 이름 주위에 어떤 방법이 있습니까?
deed02392

1
대단해! 치료를했다.
WOPR

2
이것은 재귀 적이 지 않으며 그룹에있는 그룹을 나열하지 않습니다. 중첩 또는 계층 그룹이있는 경우별로 도움이되지 않습니다.
Mark

이것은 나를 위해 완벽하게 작동합니다 (와 잘 어울립니다 net user /domain). 감사!
xan

49

다음은 특히 OU 구조가 복잡하고 그룹의 전체 고유 이름을 모르는 경우에보다 일반적으로 유용한 ds 명령 버전입니다.

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

또는 그룹의 CN (일반적으로 SAM ID와 동일)을 알고 있으면 이름에 공백이있는 경우 인용됩니다.

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

주석에 명시된 바와 같이 기본적으로 ds * 명령 (dsquery, dsget, dsadd, dsrm)은 도메인 컨트롤러에서만 사용할 수 있습니다. 그러나 Windows Server 설치 미디어의 지원 도구에서 관리 도구 팩을 설치하거나 Microsoft 다운로드 사이트에서 다운로드 할 수 있습니다.

PowerShell을 사용하여 이러한 쿼리를 수행 할 수도 있습니다. PowerShell은 Server 2008, 2008 R2 및 Windows 7의 설치 가능 기능으로 이미 제공되지만 XP 또는 Vista에 설치하려면 WinRM Framework다운로드 해야합니다 .

PowerShell의 모든 AD-특정 cmdlet에 대한 액세스를 얻으려면 것 ALSO 다음의 설치 작업 중 하나 이상을 수행해야합니다 :


나는 항상 첫 번째 쿼리를 사용합니다
Jim B

1
도메인 컨트롤러에서이 명령을 실행해야합니다.
skolima

9
당신은 하지 마십시오 도메인 컨트롤러에서이 명령을 실행해야합니다. 그러나 마십시오 윈도우 2003 서버 CD-ROM에서 지원 도구에 포함 된 관리 지원 팩의 .msi를 설치해야합니다. 또는 microsoft.com/downloads/en/…
Ryan Fisher

24

Quest AD 추가 기능이 필요없는 PowerShell 솔루션의 경우 다음을 시도하십시오.

Import-Module ActiveDirectory

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

중첩 된 그룹도 열거됩니다. 원하지 않으면 -recursive 스위치를 제거하십시오 .


6
ActiveDirectory 모듈에는 Quest ActiveRoles AD 스냅인이 필요하지 않지만 RSAT 도구가 설치되어 있고 AD에 Active Directory 웹 서비스 (2008 년의 경우)와 하나 이상의 DC가 있어야합니다. R2) 또는 Active Directory 관리 게이트웨이 서비스 (2003, 2008 DC 용)가 설치되었습니다. 자세한 내용과 링크는 위의 답변을 참조하십시오.
Ryan Fisher

16

서버와 클라이언트에서 작동하는 매우 쉬운 방법 :

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

사용자가 YOURGROUPNAME 그룹에 있으면 1을, 그렇지 않으면 0을 반환합니다

그런 다음 % ERRORLEVEL % 값을 사용할 수 있습니다 (그룹의 사용자 인 경우 0, 그렇지 않은 경우 1).

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

1
"net group"명령은 컴퓨터가 가입 된 도메인 (또는 도메인 트리) 만 검색합니다. 보다 현대적인 대안은 다음과 같습니다. whoami /groups | find /I /C "YOURGROUPNAME"
DavisNT


7

이 명령은 다른 버전의 Windows (예 : Windows 7)에 제공되지 않으므로 서버 버전의 Windows에서만 사용 dsget하고 dsquery사용할 수 있습니다. 해당 명령이없는 시스템에서는 AdFind 명령을 사용하여 원하는 정보를 얻을 수 있습니다 .

다음은 그룹 멤버십을 얻기위한 쿼리 예입니다.

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

4
ADFind.exe는 어쨌든 설치해야하는 타사 도구입니다. ds * 명령은 관리 도구 팩을 통해 설치할 수 있습니다.
Ryan Fisher

4

로컬 그룹과 사용자를 나열하는 방법?

다음 powershell 스크립트를 사용하여 로컬 그룹과 해당 그룹의 구성원을 나열하십시오.

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

위의 텍스트를 메모장에 복사하고로 저장하십시오 filename.ps1. 그런 다음 파일을 실행하십시오. 각 그룹에 그룹과 사용자를 표시하거나 powershell에서 실행할 수 있습니다.


내가 얻을, cmdlet ForEach-Object at command pipeline position 1. Supply values for the following parameters:다음으로는, 입력을 요청Process[0]
마이크 S

3

UserGroup1try 의 표시 멤버의 경우 :

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

1
어떤 CLI 유틸리티를 사용하고 있는지 지적하고 싶을 수도 있습니다. cmd어떤 이유로 든 에서 제대로 작동하지 않을 것이라고 생각합니다 .
HopelessN00b

@ HopelessN00b : 이것은 cmd에서 작동합니다
Pete

@Pete Newp! dsget failed:'Target object for this command' is missing.
HopelessN00b

@ HopelessN00b : UserGroup1이 존재하지 않으면 오류가 발생합니다. "Accounting *"
Pete
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.