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.