Windows PowerShell용 Active Directory 모듈은 도메인을 관리하고 Active Directory의 개체를 제어하며 AD 컴퓨터, 사용자, 그룹 등에 대한 다양한 정보를 조회할 수 있는 핵심 도구입니다. 모든 Windows 관리자는 AD 그래픽 스냅인(일반적으로 ADUC, 즉 Active Directory 사용자 및 컴퓨터)과 RSAT-AD-PowerShell 모듈의 cmdlet을 모두 활용하여 일상적인 Active Directory 관리 작업을 수행할 수 있어야 합니다. 이 글에서는 Windows에 PowerShell Active Directory 모듈을 설치하는 방법, 모듈의 기본 기능, 그리고 AD를 관리하고 상호 작용하는 데 유용한 인기 cmdlet들을 자세히 살펴보겠습니다.
Windows Server에 PowerShell Active Directory 모듈 설치하기
Windows PowerShell용 Active Directory 모듈은 Windows Server 운영 체제(Windows Server 2008 R2부터)에 기본으로 포함되어 있지만, 기본적으로는 활성화되어 있지 않습니다.
Windows Server 2016에서는 서버 관리자(Server Manager)를 통해 AD PowerShell 모듈을 설치할 수 있습니다. 경로는 다음과 같습니다: 역할 및 기능 추가 → 기능 → 원격 서버 관리 도구 → 역할 관리 도구 → AD DS 및 AD LDS 도구 → Windows PowerShell용 Active Directory 모듈.
또한 PowerShell 콘솔에서 다음 명령을 사용하여 설치할 수도 있습니다:
Install-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature
RSAT-AD-PowerShell은 도메인 컨트롤러에만 설치할 수 있는 것이 아닙니다. 도메인에 가입된 모든 서버나 심지어 워크스테이션에도 설치할 수 있습니다. Active Directory 도메인 서비스(AD DS) 역할을 배포할 때(서버를 AD 도메인 컨트롤러로 승격할 때)는 PowerShell Active Directory 모듈이 자동으로 설치됩니다.
이 모듈은 도메인 컨트롤러에 설치되어 있어야 하는 Active Directory 웹 서비스(Active Directory Web Service)를 통해 AD와 통신합니다(TCP 포트 9389를 통해 통신이 이루어집니다).
Windows 10에 PowerShell Active Directory 모듈 설치하는 방법
RSAT-AD-PowerShell 모듈은 Windows Server뿐만 아니라 워크스테이션에도 설치할 수 있습니다. 이 모듈은 RSAT(원격 서버 관리 도구) 패키지의 일부로, Windows 7과 Windows 8.1에서는 수동으로 다운로드하여 설치할 수 있습니다. RSAT 설치 후 제어판(제어판 → 프로그램 및 기능 → Windows 기능 켜기/끄기 → 원격 서버 관리 도구 → 역할 관리 도구 → AD DS 및 AD LDS 도구)에서 PowerShell용 Active Directory 모듈을 설치할 수 있습니다.
Windows 10 빌드 1809 이상에서는 RSAT 패키지가 Windows 이미지에 통합되어 있으므로(Features on Demand 방식), 다음 PowerShell 명령으로 Active Directory 모듈을 설치할 수 있습니다:
Add-WindowsCapability –online –Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"
또한 RSAT를 설치하지 않고도 Windows 10에 PowerShell Active Directory 모듈을 배포하는 방법도 있습니다.
Active Directory PowerShell Cmdlet
Windows PowerShell용 Active Directory 모듈에는 AD와 상호 작용할 수 있는 수많은 cmdlet이 포함되어 있습니다. RSAT 버전이 새로워질수록 cmdlet 수도 증가하며, Windows Server 2016에는 147개의 Active Directory용 PowerShell cmdlet이 제공됩니다.
Active Directory 모듈의 cmdlet을 사용하기 전에 PowerShell 세션으로 모듈을 가져와야 합니다(Windows Server 2012 R2/Windows 8.1 이상에서는 모듈이 자동으로 가져와집니다).
Import-Module ActiveDirectory
컴퓨터에 Active Directory 모듈이 설치되어 있지 않은 경우, 도메인 컨트롤러(도메인 관리자 권한 필요) 또는 다른 데스크톱 컴퓨터에서 모듈을 가져올 수 있습니다:
$psSess = New-PSSession -ComputerName DC_or_Comp_with_ADPoSh_installed
Import-Module -PSsession $psSess -Name ActiveDirectory
다음 명령으로 사용 가능한 Active Directory cmdlet의 전체 목록을 확인할 수 있습니다:
Get-Command –module ActiveDirectory
AD 모듈의 cmdlet 총 개수는 다음과 같이 확인합니다:
Get-Command –module ActiveDirectory |measure-object|select count
대부분의 RSAT-AD-PowerShell cmdlet은 Get-, Set-, New- 접두사로 시작합니다.
- Get- 계열 cmdlet은 Active Directory에서 다양한 정보를 조회하는 데 사용됩니다(Get-ADUser — 사용자 속성, Get-ADComputer — 컴퓨터 설정, Get-ADGroupMember — 그룹 구성원 등). 실행에 도메인 관리자 권한이 필요 없으며, 모든 도메인 사용자가 PowerShell 명령을 통해 AD 개체 속성 값을 조회할 수 있습니다(예: LAPS와 같은 기밀 속성은 제외).
- Set- 계열 cmdlet은 Active Directory에서 개체 설정을 지정(변경)하는 데 사용됩니다. 예를 들어 사용자 속성 변경(Set-ADUser), 컴퓨터 설정 변경(Set-ADComputer), 그룹에 사용자 추가 등이 가능합니다. 이를 위해서는 해당 개체 속성을 수정할 수 있는 권한이 계정에 있어야 합니다.
- New-로 시작하는 명령은 AD 개체를 생성할 수 있습니다(사용자 생성 — New-ADUser, 그룹 생성 — New-ADGroup).
- Remove- cmdlet은 AD 개체를 삭제하는 데 사용됩니다.
cmdlet에 대한 도움말은 다음과 같이 확인할 수 있습니다:
get-help Set-ADUser
Active Directory cmdlet의 사용 예제는 다음과 같이 표시할 수 있습니다:
(get-help New-ADComputer).examples
PowerShell ISE에서 cmdlet 매개변수를 입력할 때 팝업 힌트를 활용하면 편리합니다.
RSAT-AD-PowerShell 모듈을 활용한 Active Directory 관리
이제 Active Directory PowerShell cmdlet을 사용하여 수행할 수 있는 관리자의 대표적인 작업들을 살펴보겠습니다.
New-ADUser: AD 사용자 생성
새 AD 사용자를 생성하려면 New-ADUser cmdlet을 사용합니다. 다음 명령으로 사용자를 만들 수 있습니다:
New-ADUser -Name "Mila Beck" -GivenName "Mila" -Surname "Beck" -SamAccountName "mbeck" -UserPrincipalName "mbeck@woshub.com" -Path "OU=Users,OU=Berlin,OU=DE,DC=woshub,DC=com" -AccountPassword(Read-Host -AsSecureString "Input User Password") -Enabled $true
New-ADUser cmdlet에 대한 자세한 내용(대량으로 사용자 도메인 계정을 생성하는 방법 포함)은 관련 문서를 참고하세요.
Get-ADComputer: 컴퓨터 속성 조회
특정 OU에 있는 컴퓨터 속성 정보(컴퓨터 이름과 마지막 로그온 날짜)를 표시하려면 Get-ADComputer cmdlet을 사용합니다:
Get-ADComputer -SearchBase 'OU=CA,OU=USA,DC=woshub,DC=com' -Filter * -Properties * | FT Name, LastLogonDate -Autosize
Add-AdGroupMember: AD 그룹에 사용자 추가
AD 도메인의 기존 보안 그룹에 사용자를 추가하려면 다음 명령을 실행합니다:
Add-AdGroupMember -Identity LondonSales -Members e.braun, l.wolf
AD 그룹의 사용자 목록을 표시하고 CSV 파일로 내보내는 방법은 다음과 같습니다:
Get-ADGroupMember LondonSales -recursive| ft samaccountname| Out-File c:\ps\export_ad_users.csv
PowerShell을 통한 AD 그룹 관리에 대한 자세한 내용도 함께 참고하시기 바랍니다.
Set-ADAccountPassword: AD에서 사용자 암호 재설정
PowerShell에서 AD 사용자 암호를 재설정하려면 다음 명령을 실행합니다:
Set-ADAccountPassword m.lorenz -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "Ne8Pa$$0rd1" -Force -Verbose) –PassThru
AD 계정 잠금 해제, 활성화 및 비활성화 방법
AD 사용자 계정을 비활성화하려면:
Disable-ADAccount m.lorenz
계정을 활성화하려면:
Enable-ADAccount m.lorenz
도메인 암호 정책에 의해 잠긴 계정의 잠금을 해제하려면:
Unlock-ADAccount m.lorenz
Search-ADAccount: 비활성 및 사용 중지된 개체 찾기
AD 도메인에서 90일 이상 로그온하지 않은 모든 컴퓨터를 찾아 비활성화하려면 Search-ADAccount cmdlet을 사용합니다:
$timespan = New-Timespan –Days 90
Search-ADAccount -AccountInactive -ComputersOnly –TimeSpan $timespan | Disable-ADAccount
New-ADOrganizationalUnit: AD에 조직 구성 단위(OU) 생성
AD에서 일반적인 조직 구성 단위(OU) 구조를 빠르게 만들려면 PowerShell 스크립트를 사용할 수 있습니다. 예를 들어 여러 주 이름을 가진 OU를 생성하고 그 안에 표준 개체 컨테이너를 만들고 싶다고 가정해 보겠습니다. 그래픽 ADUC 스냅인을 통해 이 AD 구조를 수동으로 만드는 것은 상당히 시간이 걸리는 작업입니다. PowerShell용 AD 모듈을 사용하면(스크립트 작성 시간을 제외하고) 몇 초 만에 완료할 수 있습니다:
$fqdn = Get-ADDomain
$fulldomain = $fqdn.DNSRoot
$domain = $fulldomain.split(".")
$Dom = $domain[0]
$Ext = $domain[1]
$Sites = ("Nevada","Texas","California","Florida")
$Services = ("Users","Admins","Computers","Servers","Contacts","Service Accounts")
$FirstOU ="USA"
New-ADOrganizationalUnit -Name $FirstOU -Description $FirstOU -Path "DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
foreach ($S in $Sites)
{
New-ADOrganizationalUnit -Name $S -Description "$S" -Path "OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
foreach ($Serv in $Services)
{
New-ADOrganizationalUnit -Name $Serv -Description "$S $Serv" -Path "OU=$S,OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
}
}
스크립트를 실행하면 Active Directory에 다음과 같은 OU 구조가 생성됩니다.
AD 컨테이너 간에 개체를 이동하려면 Move-ADObject cmdlet을 사용합니다:
$TargetOU = "OU=Sales,OU=Computers,DC=woshub,DC=com"
Get-ADComputer -Filter 'Name -like "SalesPC*"' | Move-ADObject -TargetPath $TargetOU
Get-ADReplicationFailure: AD 복제 오류 확인
Get-ADReplicationFailure cmdlet을 사용하면 AD 도메인 컨트롤러 간의 복제 상태를 확인할 수 있습니다:
Get-ADReplicationFailure -Target NY-DC01,NY-DC02
도메인의 모든 도메인 컨트롤러에 대한 정보를 얻으려면 Get-AdDomainController cmdlet을 사용합니다:
Get-ADDomainController –filter * | select hostname,IPv4Address,IsGlobalCatalog,IsReadOnly,OperatingSystem | format-table –auto
지금까지 AD 도메인을 관리하기 위한 Active Directory PowerShell 모듈의 기본 기능을 살펴보았습니다. 이 글이 모듈의 다른 기능들을 더 깊이 탐색하고 대부분의 AD 관리 작업을 자동화하는 계기가 되기를 바랍니다.