기술자료 (KB)/Active Directory (AD)
Active Directory 직함 그룹 설정 방법
이완주
2022. 2. 11. 17:49
문의 내용
직함 그룹을 만들어 사용자를 해당 부서에 넣고 직급에 맞게 권한을 부여하고자 한다.
예를 들어 과장 직급을 가지고 있는 사용자만 접근 가능하게 구성 등
1. 직함 그룹을 생성해야 한다.
2. 해당 그룹에 사용자의 직함을 확인하여 직함에 맞게 자동으로 그룹에 추가해야 한다.
3. 조직도 변경 (승진)등의 이유로 해당 직함이 변경되었을 때 자동으로 기존 그룹에 삭제
해당 그룹에 자동으로 넣어야 한다.
예) 과장에서 차장으로 승진, 과장 그룹에 멤버 제거 차장 그룹에 멤버 추가
1. 직함 그룹 생성
Powershell 명령어로 생성
New-ADGroup -Name "사원" -SamAccountName "사원" -GroupCategory Security -GroupScope Global -DisplayName "사원" -Description "사원" ` -Path "ou=titlegroups,ou=globalsoft,dc=gsoft,dc=local" |
Csv 파일로 일괄 등록
Titlegroup.csv 파일 정보 – 한글로 표현되어 있음으로 반드시 UTF-8로 저장
group,description 대표이사,00 대표이사 전무,01 전무 상무,02 상무 이사,03 이사 부장,04 부장 차장,05 차장 과장,06 과장 대리,07 대리 주임,08 주임 사원,09 사원 |
Powershell 명령어로 csv 파일을 불러와 일괄 등록
Import-Csv -Path C:\Temp\titlegroup.csv | ForEach-Object ` { Write-Host "Add Group :" $_.group New-ADGroup -Name $_.group -SamAccountName $_.group -GroupCategory Security -GroupScope Global -DisplayName $_.groupe -Description $_.description ` -Path "ou=titlegroups,ou=globalsoft,dc=gsoft,dc=local" } |
실행 결과
2. 해당 그룹에 사용자 추가
단 사용자의 직함 정보가 등록되어 있어야 함.
인사정보를 받아 1번 방법으로 csv 파일로 일괄 수정해서 값을 변경 가능
구성원 확인 – 샘플로 3개 계정만 등록되어 있는 상태
#그룹 구성원 확인 Get-ADUser -SearchBase "OU=globalsoft,DC=gsoft,DC=local" -Filter * -Property title, memberof | select name, title, memberof |
해당 멤버를 직함 그룹에 넣기
# 직급(Title)에 맞는 그룹에 멤버 추가 (직급별 그룹 멤버 추가) $accountName = Get-ADUser -SearchBase "OU=globalsoft,DC=gsoft,DC=local" -Filter * -Property title | select samaccountname Write-Host "부서 그룹에 맞게 멤버 추가" foreach ($user in $accountName.samaccountname) { Write-Host "사용자 계정 : " $user $title = (Get-Aduser $user -Properties title).title if($title) { Add-ADGroupMember $title -Members $user } } |
3. 직함 수정할 경우 아래 스크립트 실행하면 직함에 맞지 않는 멤버 자동으로 제거
$groupName = Get-ADGroup -SearchBase "ou=titlegroups, OU=globalsoft,DC=gsoft,DC=local" -Filter * | select samaccountname Write-Host "부서 그룹에 맞지 않는 멤버 제거" foreach ($group in $groupName.samaccountname) { Write-Host "Group : " $group $members = Get-ADGroupMember -Identity $group foreach ($user in $members.samaccountname) { if ($user -ne $null) { $usertitle = (Get-ADUser $user -Property title).title if($group -ne $usertitle) { Write-Host "Remove User : $user" Remove-ADGroupMember $group -Members $user } } } } |
아래와 같이 다를 경우 삭제 확인 메시지 나오고 예를 눌러 멤버 제거