본문 바로가기
기술자료 (KB)/Active Directory (AD)

Active Directory 직함 그룹 설정 방법

by 이완주 2022. 2. 11.

문의 내용

직함 그룹을 만들어 사용자를 해당 부서에 넣고 직급에 맞게 권한을 부여하고자 한다.

예를 들어 과장 직급을 가지고 있는 사용자만 접근 가능하게 구성 등

 

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
            }
        }
   }
}

 

아래와 같이 다를 경우 삭제 확인 메시지 나오고 예를 눌러 멤버 제거

 

댓글