Microsoft Active Directory 는 관리, 권한 부여 및 인증을 위한 중앙 집중식 지점 역할을 합니다. AD에서 네트워크 리소스에 대한 액세스는 사용자 계정과 컴퓨터 계정 같은 보안 주체(security principals)에게 부여되며, 이러한 권한은 시간이 지나면서 변경될 수 있습니다. 액세스 관리를 단순화하고 보안을 강화하기 위해 중·대기업에서는 종종 Active Directory security groups 를 사용합니다. 이 보안 그룹에는 사용자 계정, 컴퓨터 계정 및 기타 그룹이 포함될 수 있습니다. 또한 이메일 배포 목록을 관리하기 위해 배포 그룹(distribution groups)을 함께 사용하곤 합니다. 보안 그룹과 배포 그룹 모두 고유한 보안 식별자(SID)와 전역적으로 고유한 식별자(GUID)를 가집니다.
엄선한 관련 콘텐츠:
ADUC MMC 스냅인은 두 유형의 그룹을 관리하는 데 적합하지만, PowerShell을 사용하면 대량으로 훨씬 더 효율적으로 관리할 수 있습니다.
AD 그룹과 그룹 관리에 대해 아직 익숙하지 않다면, 계속 진행하기 전에 Active Directory Group Management Best Practice 가이드를 먼저 읽어보세요.
또한 이러한 PowerShell 스크립트를 사용하려면 AD와 상호 작용하기 위한 모듈인 Microsoft Windows PowerShell용 Active Directory 모듈을 가져와야 합니다. 이 모듈은 Windows Server 2008 R2에서 도입되었으며 Windows Server 2012 및 이후 버전에서는 기본적으로 활성화되어 있습니다. 다음 명령을 실행하면 AD 모듈 cmdlet의 전체 목록을 확인할 수 있습니다:
Get-Command -Module ActiveDirectory
전체 목록에는 147개의 cmdlet이 포함되어 있지만, Active Directory 그룹과 관련된 것은 아래의 11개뿐입니다:
- Add-ADGroupMember
- Add-ADPrincipalGroupMembership
- Get-ADAccountAuthorizationGroup
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- New-ADGroup
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADPrincipalGroupMembership
- Set-ADGroup
PowerShell로 Active Directory 그룹 만들기
AD 그룹을 만들려면 New-ADGroup cmdlet을 사용하세요. 아래 명령을 실행하면 해당 문법을 확인할 수 있습니다:
Get-Command New-ADGroup –Syntax
그룹을 가장 쉽게 만들려면 다음 짧은 스크립트를 실행하세요:
New-ADGroup "Group Name"
시스템에서 “GroupScope” 매개변수를 지정하라고 요청한 다음 새 그룹을 생성합니다. 하지만 이 그룹에는 다음과 같은 기본 값이 적용됩니다:
- “Users”라는 기본 LDAP 컨테이너에 생성됩니다.
- “Security” 그룹 유형을 갖게 됩니다.
- members, member of, description, email, notes 필드는 모두 비어 있게 됩니다.
AD DC에서 “Quality”라는 보안 그룹을 만들고 싶다고 가정해 봅시다. 다음 매개변수를 사용하겠습니다. “Production” OU에 있어야 합니다 (-Path), 보안 그룹이어야 합니다 (-GroupCategory), 그리고 전역이어야 합니다 (-GroupScope).
New-ADGroup "Quality" -Path "OU=Production,DC=enterprise,dc=com" -GroupCategory Security -GroupScope Global -PassThru –Verbose
범용 배포 그룹을 만들고 싶다면, –GroupCategory 매개변수를 “Distribution”으로 바꾸고, –GroupScope 매개변수를 “Universal”로 바꾸기만 하면 됩니다. –Path 매개변수를 변경하면 LDAP 경로도 바꿀 수 있습니다.
PowerShell로 Active Directory 그룹 삭제하기
AD 그룹을 삭제하려면 Remove-ADGroup cmdlet을 사용하세요. 가장 쉬운 스크립트는 다음과 같습니다:
Remove-ADGroup -Identity Quality
그룹 삭제를 확인하라는 메시지가 표시됩니다.
PowerShell로 그룹에 사용자와 컴퓨터 추가하기
다음 Add-AdGroupMember cmdlet을 사용하면 AD 그룹에 사용자를 추가할 수 있습니다. 예를 들어 B.Jackson과 E.Franklin 두 명의 사용자를 “Quality” 그룹에 추가해야 한다면, 스크립트는 다음과 같이 작성됩니다:
Add-AdGroupMember -Identity Quality -Members B.Jackson, E.Franklin
사용자를 보안 그룹에 추가한 후에는 아래 스크립트를 실행해 해당 사용자가 멤버로 나열되어 있는지 확인할 수 있습니다:
Get-ADGroupMember -Identity Quality
“Domain Admins”와 같은 다른 보안 또는 배포 그룹에 사용자를 추가해야 한다면, –Identity 매개변수의 값으로 “Domain Admins”를 지정하십시오. 한 그룹을 다른 그룹의 구성원으로 만들어야 하는 경우, –Members 매개변수의 값으로 그룹 이름을 지정하십시오. 이와 동일한 원칙은 컴퓨터 계정에도 적용되지만, 컴퓨터 계정 이름 끝에 달러 기호($)를 추가해야 합니다. 예를 들어 컴퓨터 “WKS043”을 그룹에 추가하려면 –Member 매개변수의 값으로 “WKS043$”를 지정하십시오:
Add-AdGroupMember -Identity Quality -Members WKS043$
엄선한 관련 콘텐츠:
한 사용자를 여러 그룹에 추가하기
한 번에 한 사용자를 여러 그룹에 추가하려면 다음 스크립트를 실행하십시오.
"Managers","Quality" | Add-ADGroupMember -Members `
(Read-Host -Prompt "Enter User Name")
CSV 파일에서 그룹에 사용자 추가하기
여러 명의 사용자를 그룹에 대량으로 추가하려면 CSV 파일에 사용자 정보를 지정한 다음 해당 파일을 가져올 수 있습니다. CSV 파일의 사용자 이름 목록에는 반드시 “users” 열에 있는 SamAccountNames 이(가) 포함되어 있어야 합니다.
CSV 파일에서 그룹에 사용자를 추가하려면 다음 PowerShell 스크립트를 실행하십시오:
Import-CSV C:scriptsusers.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity "Quality" -members $_.users}
한 그룹의 사용자를 다른 그룹으로 복사하기
한 그룹의 모든 구성원을 다른 그룹으로 복사하려면 다음 스크립트를 실행하십시오:
Get-ADGroupMember “Quality” | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “QualityControl” -Members $_}
그룹에서 사용자 또는 컴퓨터 제거하기
사용자를 그룹에서 제거하려면 다음 Remove-ADGroupMember cmdlet을 사용합니다:
Remove-ADGroupMember -Identity Quality -Members J.Robinson
컴퓨터 계정을 그룹에서 제거하려면, 컴퓨터 이름 끝에 달러 기호($)를 붙여 -Members 매개변수의 값으로 지정합니다.
그룹에서 여러 사용자 계정 제거
AD 그룹에서 여러 사용자를 제거하는 쉬운 방법은 사용자 이름 목록이 포함된 CSV 파일을 만든 다음, 이 스크립트를 사용하여 해당 사용자를 그룹 개체에서 제거하는 것입니다:
Import-CSV C:scriptsusers.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity "Quality" -members $_.users}
사용자를 모든 그룹에서 제거하기
사용자를 모든 그룹에서 제거하려면 이 스크립트를 실행하세요:
Get-ADUser -Identity E.Franklin -Properties MemberOf | ForEach-Object {
$_.MemberOf | Remove-ADGroupMember -Members $_.DistinguishedName -Confirm:$false
}
사용자는 “Domain Users”를 제외한 모든 그룹 멤버십이 해제됩니다. 필요하면 “Domain Users”는 수동으로 제거할 수 있습니다.
Active Directory 그룹에 대한 보고
PowerShell을 사용하여 그룹과 관련된 많은 일반적인 Active Directory 관리 작업을 수행하는 방법을 알게 되었으니, AD에 어떤 그룹이 있는지 보고하는 방법을 살펴보겠습니다:
AD의 모든 그룹을 나열하려면 아래 스크립트를 사용하세요:
Get-ADGroup -filter * -properties GroupCategory | ft name,groupcategory
물론 AD 그룹 구성원과 AD 그룹 멤버십 변경 사항도 함께 검토해야 합니다. 다음은 이러한 더 복잡한 작업을 수행하기 위한 지침 링크입니다:
- Active Directory 그룹 멤버십 변경 사항을 모니터링하는 방법
- AD 사용자 그룹 멤버십 보고서를 가져오는 방법
- 특정 AD 그룹의 구성원을 내보내는 방법
- PowerShell로 OUs 관리 및 해당 개체 이동하기
결론
PowerShell 스크립트를 사용하여 Active Directory에서 그룹과 그룹 멤버십을 관리하는 방법을 배웠다면, 이제 몇 가지 그룹 관리 작업을 직접 수행해 보세요. 다만 주의하고, 문제가 발생했을 때 변경 사항을 쉽게 되돌릴 수 있도록 Active Directory Recycle Bin 기능을 활성화 잊지 마세요. ADUC MMC 스냅인은 그룹과 그룹 멤버십을 관리하는 데 훌륭하지만, 대량으로 그룹을 관리할 때는 PowerShell이 훨씬 더 적합합니다.
공유하기
더 알아보기
저자 소개
Jeff Melnick
시스템 엔지니어링 디렉터
Jeff는 Netwrix의 Global Solutions Engineering 분야 전(前) 디렉터입니다. 그는 오랜 기간 Netwrix 블로거이자 연사, 프레젠터로 활동해 왔습니다. Netwrix 블로그에서 Jeff는 시스템 관리 경험을 크게 향상시킬 수 있는 라이프해킹, 팁, 트릭을 공유합니다.