Get-ADGroup 및 기타를 사용하여 AD 그룹 관리

ActiveDirectory PowerShell 모듈을 사용하면 Get-AdGroup을 통해 AD 그룹을 쿼리하고, 그룹 및 그룹 멤버를 추가, 업데이트 및 제거할 수 있습니다. 이 블로그 포스트에서는 Active Directory 그룹 PowerShell cmdlet에 대해 조금 배우고 참조용으로 다양한 예제를 제공합니다.

Active Directory 그룹 Cmdlet

ActiveDirectory PowerShell 모듈을 설치하면 그룹 관리를 위한 몇 가지 cmdlet을 사용할 수 있습니다.

Cmdlet Name Description
Add-ADGroupMember Used to add members to an AD group.
Add-ADPrincipalGroupMembership Used to add an AD principal to AD groups.
Get-ADGroup Used to return a group or groups from AD.
Get-ADGroupMember Used to return the members of an AD group.
Get-ADPrincipalGroupMembership Used to get the groups an AD principal is a member of.
New-ADGroup Used to create a new AD group.
Remove-ADGroup Used to delete an AD group.
Remove-ADGroupMember Used to remove members from an AD group.
Remove-ADPrincipalGroupMembership Used to remove an AD principal from AD groups.
Set-ADGroup Used to set the properties of an AD group.

이러한 cmdlet과 PowerShell 기술을 사용하면 PowerShell을 사용하여 Active Directory 그룹의 모든 측면을 관리할 수 있습니다.

Get-ADGroupMember를 사용하여 그룹의 멤버 찾기

Get-AdGroupMember cmdlet은 그룹의 모든 멤버를 반환합니다.

PS51> Get-ADGroupMember -Identity <identity string or object>

또는 Get-AdUser cmdlet을 사용하여 특정 사용자의 memberOf 속성을 참조할 수도 있습니다. 필터를 작성하는 방법에 대한 복습은 PowerShell에서 Active Directory 및 LDAP 필터 배우기를 참조하십시오.Learning Active Directory Directory and LDAP Filters in PowerShell.

다음은 두 가지 예시입니다.

PS51> Get-ADUser -Filter 'memberOf -eq ""'
PS51> Get-ADUser -LDAPFilter '(memberOf=)'

이것은 ADPrincipal 개체의 컬렉션을 반환합니다.

그룹의 멤버를 CSV 파일로 내보내기

이렇게 각 사용자의 이름, 성, 이메일 주소를 내보냅니다. Get-ADGroupMember의 결과를 Get-ADUser로 파이프링합니다. 이는 이러한 ADPrincipal 개체가 ADUser 개체가 가지고 있는 모든 속성을 가지고 있지 않기 때문입니다.

PS51> $GroupMembers = Get-ADGroupMember -Identity 'Professional Services Department'
PS51> $GroupMembers | Get-ADUser -Properties GivenName,Surname,Mail | Select-Object GivenName,Surname,Mail | Export-CSV -Path GroupMembers.CSV -NoTypeInformation

CSV 파일이 다른 애플리케이션과 호환되도록 하기 위해 Export-CSVNoTypeInformation 매개변수를 사용하는 것에 유의하세요.

Get-ADGroup을 사용하여 멤버가 없는 그룹 찾기

필터를 사용하여 그룹을 찾기 위해 Get-AdGroup을 사용합니다. 아래에 두 가지 예시가 있습니다.

PS51> Get-ADGroup -Filter "Members -notlike '*'"
PS51> Get-ADGroup -LDAPFilter "(!(member=*))"

New-ADGroup으로 새 보안 그룹 생성

New-AdGroup 명령을 사용하여 새 보안 그룹을 생성합니다.

PS51> New-ADGroup -Name '<group name>' -GroupScope <scope of group> -Path '<path of the OU tht will host the new group>'

Path 매개변수가 제공되지 않으면 새 그룹은 Users 컨테이너에 생성됩니다. 그룹 범위는 DomainLocal, Global 또는 Universal이어야 합니다.

New-ADGroup로 새 분배 그룹 생성

다시 New-AdGroup을 사용하여 분배 그룹을 생성합니다. 이번에는 GroupCategoryDistribution으로 선택합니다.

PS51> New-ADGroup -Name '<group name>' -GroupScope <scope of group>  -GroupCategory Distribution -Path '<path of the OU tht will host the new group>'

Add-ADGroupMember로 그룹에 멤버 추가

PowerShell을 사용하여 Active Directory 그룹에 사용자를 추가하는 데는 Add-AdGroupMember cmdlet 또는 Add-ADPrincipalGroupMembership cmdlet을 사용할 수 있습니다.

이 명령은 그룹을 Identity로 지정합니다.

PS51> Add-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)>

이 명령은 AD 주체를 Identity로 지정합니다.

PS51> Add-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)>

Set-AdGroup의 Notes 속성에 작성하십시오.

ADUC의 Notes로 레이블된 필드는 Get-AdGroup에서 반환된 Info 속성으로 표시됩니다.

먼저 변경할 그룹을 찾고, Info 속성을 설정한 다음 Set-AdGroup을 사용하여 변경 사항을 AD에 적용하십시오.

PS51> $group = Get-ADGroup -Identity <identity string or object>
PS51> $group.Info = 'Important notes on this group'
PS51> Set-ADGroup $group

Remove-ADGroupMember를 사용하여 그룹 멤버를 제거하십시오.

모든 PowerShell cmdlet과 마찬가지로, 변경 사항을 수행하기 전에 프롬프트가 표시되도록 Confirm 매개변수를 사용할 수 있습니다. 이 동작은 Remove-AdGroupMemberRemove-ADPrincipalGroupMembership cmdlet에도 적용됩니다.

아래에서 확인 없이 그룹 멤버를 제거할 수 있습니다.

PS51> Remove-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)>
PS51> Remove-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)>

또는 Confirm 매개변수를 사용하여 확인을 받고 그룹 멤버를 제거할 수 있습니다.

PS51> Remove-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)> -Confirm
PS51> Remove-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)> -Confirm

Remove-ADGroup을 사용하여 그룹을 삭제하십시오.

확인 없이 그룹을 삭제하거나 확인을 받고 그룹을 삭제할 수 있습니다.

PS51> Remove-ADGroup -Identity <identity string or object>
PS51> Remove-ADGroup -Identity <identity string or object> -Confirm

Rename-ADObject를 사용하여 그룹의 이름을 변경하십시오.

Rename-ADObject를 사용하여 그룹의 이름을 한 줄로 변경할 수 있습니다.

PS51> Rename-ADObject -Identity <identity string or object> -NewName '<new name>'

Get-ADGroup을 사용하여 그룹의 수를 가져옵니다.

Get-AdGroup을 통해 반환된 그룹의 총 수를 찾아야 하는 경우 Count 속성을 사용하십시오.

PS51> (Get-ADGroup -Filter '*').Count

Get-ADGroup을 사용하여 관리자가 있는 그룹을 찾으십시오.

Get-AdGroup과 잘 구성된 LDAP 필터를 사용하여 관리자가 할당된 모든 그룹을 필터링하십시오.

PS51> Get-ADGroup -LDAPFilter '(managedby=*)'

이에 대한 PowerShell 필터는 없습니다.

Get-ADGroup를 사용하여 특정 사용자가 관리하는 그룹을 찾습니다.

PowerShell 필터 또는 LDAP 필터를 사용하여 특정 사용자가 관리하는 모든 그룹을 찾으세요.

PS51> Get-ADGroup -Filter 'managedby -eq "<distinguished name of user>"'
PS51> Get-ADGroup -LDAPFilter '(managedby=<distinguished name of user>)'

Set-ADGroup을 사용하여 그룹 관리자를 설정하세요.

그룹의 Managed By 탭은 그룹의 멤버십을 책임지는 사람을 지정할 수 있게 합니다. 그러나 이것은 그룹 멤버십을 변경할 수 있는 것은 아닙니다. 이를 위해서는 해당 그룹의 Member 속성에 대한 보안 권한을 변경해야 합니다.

Active Directory Users and Computers (ADUC)의 그룹에 대한 Manager can update membership list 상자를 선택하는 것은 이를 가능하게 하는 권한을 변경합니다.

Managed By tab in Active Directory Users and Computers

Set-ADGroup을 사용하여 ManagedBy 속성을 설정하세요.

PS51> Set-ADGroup -ManagedBy '<distinguished name, GUID, SID or SAM Account name of manager>'

액세스 제어 목록을 업데이트하는 데는 몇 가지 단계가 더 필요합니다. 다음 코드 스니펫은 사용자 Kristin Diaz에게 그룹의 멤버십을 관리할 수 있는 권한을 부여합니다. bf9679c0-0de6-11d0-a285-00aa003049e2는 그룹의 Member 속성의 GUID입니다.

만약 Kristin이 그룹의 관리자로 설정되어 있다면, 해당 상자에 체크 표시가 될 것입니다. 그렇지 않으면, Kristin은 그룹의 멤버십을 관리할 수 있지만 ADUC에는 관리자로 표시되지 않습니다.

NCSC 비밀번호 목록과 대조하여 Active Directory에서 유출된 및 안전하지 않은 비밀번호를 찾으세요.

$group = Get-ADGroup -Identity 'Professional Services Department'
$manager = Get-ADUser -Identity 'Kristin.Diaz'
$NTPrincipal = New-Object System.Security.Principal.NTAccount $manager.samAccountName
$objectGUID = New-Object GUID 'bf9679c0-0de6-11d0-a285-00aa003049e2'
$acl = Get-ACL "AD:$($group.distinguishedName)"
$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $NTPrincipal,'WriteProperty','Allow',$objectGUID
$acl.AddAccessRule($ace)
Set-ACL -AclObject $acl -Path "AD:$($group.distinguishedName)"

모든 보안 그룹 찾기

PowerShell을 사용하여 Active Directory에서 보안 그룹만 검색 쿼리에 제한하여 이 두 가지 예제로 모든 보안 그룹을 나열하세요. LDAP 필터가 무엇인지 궁금하신가요? LDAP 필터에 대해 자세히 알아보세요.

PS51> Get-ADGroup -Filter 'groupcategory -eq "Security"'
PS51> Get-ADGroup -LDAPFilter '(groupType:1.2.840.113556.1.4.803:=2147483648)'

배포 그룹 찾기

이 두 가지 예제를 사용하여 보안 그룹을 제외한 Active Directory 그룹 (배포)을 나열하기 위해 PowerShell을 사용하세요.

PS51> Get-ADGroup -Filter 'groupcategory -eq "Distribution"'
PS51> Get-ADGroup -LDAPFilter '(!(groupType:1.2.840.113556.1.4.803:=2147483648))'

Get-ADPrincipalGroupMembership을 사용하여 사용자의 그룹 멤버십 찾기

PS51> Get-ADPrincipalGroupMembership -Identity <identity string or object>

이 명령은 글로벌 카탈로그에 액세스해야 합니다.

하위 OU를 포함하지 않는 OU에서 그룹 찾기

이 두 가지 예제를 사용하여 SearchBase 매개변수를 사용하여 검색을 단일 OU로 제한하세요.

PS51> Get-ADGroup -Filter '*' -SearchBase '<distinguished name of OU>' -SearchScope OneLevel
PS51> Get-ADGroup -LDAPFilter '(CN=*)' -SearchBase '<distinguished name of OU>' -SearchScope OneLevel

하위 OU를 포함하는 OU에서 그룹 찾기

자식 OU의 모든 그룹을 찾아야 하는 경우 SearchScopeSubTree로 사용하세요.

PS51> Get-ADGroup -Filter '*' -SearchBase '<distinguished name of OU>' -SearchScope SubTree
PS51> Get-ADGroup -LDAPFilter '(CN=*)' -SearchBase '<distinguished name of OU>' -SearchScope SubTree

요약

PowerShell을 사용하여 AD 그룹을 관리하는 예제 중심의 데모가 여기까지입니다. 몇 가지를 가져와서 조직에서 테스트해보고 자동화를 시작하세요!

Source:
https://adamtheautomator.com/get-adgroup/