개요
ActiveDirectory 모듈은 조직의 사용자·그룹·컴퓨터·정책을 중앙에서 관리하는 Active Directory(AD)를 PowerShell 객체로 다루게 해 주는 모듈이다. 지금까지 Part 1–16이 한 대의 컴퓨터(로컬 또는 원격 세션 하나)를 대상으로 했다면, Part 17(엔터프라이즈 디렉터리 관리)은 시야를 도메인 전체 — 수십에서 수만 대의 컴퓨터와 계정을 아우르는 조직 구조 — 로 넓힌다. 11부(원격 관리)와 14부(보안과 자격 증명)에서 다진 지식이 여기서 실전 전제 조건이 된다.
정신 모델은 “지금까지의 cmdlet들이 한 컴퓨터의 파일 시스템이나 프로세스 목록을 조회했다면, Get-ADUser는 그 대상을 디렉터리 서비스(AD)라는 거대한 데이터베이스로 바꿔치기한 것"이라는 것이다. 30장에서 배운 프로바이더 개념처럼 조회·필터링 문법 자체는 익숙하지만, 그 대상이 파일이 아니라 조직 전체의 계정 정보라는 점이 다르다.
사용법
| |
종류
| 매개변수 집합 | 트리거 매개변수 | 용도 |
|---|---|---|
| Identity(단일 조회) | -Identity | DN·GUID·SID·SAM 계정명 중 하나로 정확히 한 사용자 조회 |
| Filter(검색) | -Filter | PowerShell 표현식 언어로 여러 사용자를 조건 검색 |
| LdapFilter(검색) | -LDAPFilter | 기존 LDAP 쿼리 문자열을 그대로 재사용 |
| 주요 매개변수 | 의미 |
|---|---|
-Properties | 기본 속성 집합 외에 추가로 가져올 속성(*로 전체 속성 조회 가능) |
-SearchBase | 검색 범위를 특정 OU(조직 구성 단위)로 제한 |
-SearchScope | Base/OneLevel/Subtree — 검색 깊이 지정 |
-Credential | 현재 로그온 계정이 아닌 다른 자격 증명으로 질의(100장 PSCredential과 조합) |
-Server | 특정 도메인 컨트롤러를 지정해 질의 |
예시
| |
주의사항·함정
ActiveDirectory 모듈은 기본 설치되어 있지 않고 RSAT(원격 서버 관리 도구)를 통해 별도로 설치해야 한다: Windows 클라이언트에서는 “설정 → 앱 → 선택적 기능"에서 “RSAT: Active Directory Domain Services and Lightweight Directory Tools"를 추가해야 하며, 도메인 컨트롤러가 아닌 일반 워크스테이션에는 기본적으로 이 모듈이 없다. 80장에서 배운 PackageManagement로 설치되는 일반 모듈과 달리, RSAT는 Windows 기능 자체를 켜는 절차라는 점이 다르다.
-Filter의 문법은 Where-Object의 -eq/-like 연산자와 비슷해 보이지만 실제로는 완전히 다른 쿼리 언어(PowerShell 표현식 언어)로 서버 측에서 실행된다: 클라이언트 쪽에서 객체를 받아온 뒤 필터링하는 12장의 Where-Object와 달리, -Filter는 조건을 도메인 컨트롤러로 그대로 전달해 서버에서 검색을 수행한다. 이 차이 때문에 -Filter에는 임의의 PowerShell 스크립트 블록이나 ? 와일드카드를 쓸 수 없고, 지원되는 연산자 집합도 제한적이다.
기본 속성 집합에는 이메일·부서 같은 흔히 필요한 속성이 빠져 있다: Get-ADUser를 매개변수 없이 호출하면 Name, SamAccountName 같은 최소한의 속성만 반환되고, Department나 mail 같은 속성은 -Properties에 명시적으로 나열해야만 나타난다. 필요한 속성이 결과에 없다고 해서 그 사용자에게 값이 없는 것은 아니라, 애초에 요청하지 않았을 뿐인 경우가 많다.
대규모 도메인에서 -Filter *로 전체 조회를 하면 -ResultPageSize(기본 256)에 따라 여러 페이지로 나뉘어 응답 시간이 길어질 수 있다: 필요한 범위를 -SearchBase로 좁히거나 구체적인 필터 조건을 지정하지 않으면, 수만 개의 계정을 가진 조직에서는 쿼리 자체가 상당한 부하를 유발할 수 있다.
이식성: Linux 진영에서 LDAP 디렉터리를 다루는 표준 도구는 ldapsearch이며, Get-ADUser -LDAPFilter는 바로 그 LDAP 쿼리 문법을 그대로 재사용할 수 있게 다리를 놓아준다. 다만 ldapsearch는 원시 LDAP 프로토콜 수준에서 동작해 반환값이 텍스트 속성 목록인 반면, Get-ADUser는 그 결과를 Microsoft.ActiveDirectory.Management.ADUser 객체로 감싸 파이프라인의 다른 cmdlet과 곧바로 연결할 수 있게 해준다.
![Featured image of post [PowerShell] 115. ActiveDirectory 모듈 개요와 Get-ADUser](/post/powershell/activedirectory-module-get-aduser-powershell/wordcloud_hu_e3ab06f4b06f4070.webp)
![[PowerShell] 113. Invoke-WebRequest/Invoke-RestMethod](/post/powershell/invoke-webrequest-invoke-restmethod-powershell/wordcloud_hu_d83d75f2879b9315.webp)
![[PowerShell] 114. New-Guid/Get-Random — 유틸리티 모음](/post/powershell/new-guid-get-random-utility-powershell/wordcloud_hu_e9ded1c7c447f201.webp)
![[PowerShell] 115. ActiveDirectory 모듈 개요와 Get-ADUser](/post/powershell/activedirectory-module-get-aduser-powershell/wordcloud_hu_975c1aa2fa88b4a7.webp)
![[PowerShell] 116. New-ADUser/Set-ADUser — 계정 생성·수정](/post/powershell/new-aduser-set-aduser-powershell/wordcloud_hu_fd894bb2538db14a.webp)
![[PowerShell] 117. Get-ADGroup/Add-ADGroupMember — 그룹 관리](/post/powershell/get-adgroup-add-adgroupmember-powershell/wordcloud_hu_e8de98576fd4653.webp)
![[PowerShell] 118. Get-GPO — 그룹 정책 조회(GroupPolicy 모듈)](/post/powershell/get-gpo-grouppolicy-module-powershell/wordcloud_hu_d7a3f05882cd0164.webp)
![[PowerShell] 00. 과정 개요와 커리큘럼](/post/powershell/getting-started-powershell/wordcloud_hu_15979a96cd2a594f.webp)
![[PowerShell] 100. Get-Credential과 PSCredential 객체](/post/powershell/get-credential-pscredential-object-powershell/wordcloud_hu_e8db052a57f9c242.webp)