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

Powershell - Active Directory Group Management

by 이완주 2024. 6. 26.

그룹에 멤버를 csv 파일을 불러와 설정하는 방법입니다.

그룹에 그룹을 넣는 것은 하위 조직을 상위 조직에 포함시키는 방법으로 AD에서 그룹 관리 할 경우 꼭 알아 두셔야 할 기능으로 판단 되어 집니다.

 

C:\Temp\GroupSample.csv 파일 내용 입니다.

아래 내용에서 Path 값은 실제 저장될 OU의 위치를 예기하고 있으니 각자의 환경에 맞춰 변경해 주시면 됩니다.

 

1,2,3,Name,Sam,Desc,Path
MSA,,,MSA,MSA,MSA,"OU=GROUPS,OU=MSA,OU=MST,DC=gsoft,DC=local"
MSA,경영지원본부 ,,경영지원본부,MSA_경영지원본부,MSA/경영지원본부,"OU=GROUPS,OU=MSA,OU=MST,DC=gsoft,DC=local"
MSA,경영지원본부,경영지원실,경영지원실,MSA_경영지원실,MSA/경영지원본부/경영지원실,"OU=GROUPS,OU=MSA,OU=MST,DC=gsoft,DC=local"

 

 

Powershell 명령어 정리

 

그룹 생성

Import-Csv "C:\Temp\GroupSample.csv" | ForEach-Object `
{
    Write-Host "그룹 이름 : " $_.Name
    New-ADGroup -Name $_.Name -SamAccountName $_.Sam -GroupScope Global -Description $_.Desc -Path $_.Path
}

 

 

그룹 멤버 제거

Import-Csv "C:\Temp\GroupSample.csv" | ForEach-Object `
{
    Write-Host "그룹 이름 : " $_.Name
    Get-ADGroup $_.Sam | Set-ADGroup -Clear member
}

 

 

그룹에 멤버 추가

Import-Csv "C:\Temp\GroupSample.csv" | ForEach-Object `
{   
    #$level 변수에 GroupSample.csv 파일의 Desc 항목의 /의 갯수를 확인하여 숫자로 넣기
    $level = (Select-String -InputObject $_.Desc -Pattern "/" -AllMatches).Matches.Count
   
   	#$list 변수에 GroupSample.csv 파일의 Desc 항목의 /로 분류 문자로 텍스트 분류하여 배열에 넣기
    $list=$_.Desc -split "/"
    
        
    # 상위 부서의 이름의 SamAccountName을 찾아서 $samaccount에 넣기
    Import-Csv "C:\Temp\GroupSample.csv" | ForEach-Object `
    {
    	# $list 값 중 현재 레벨보다 1적은 텍스트 즉 상위 부서의 이름 가져와서 현재 이름과 비교
        If($list[$level - 1 ] -eq $_.Name){
            $samaccount = $_.Sam
        }
    }
    
    # $level이 0보다 크면 아래 조건문 실행
    If($level -gt 0) {
    	
        # 화면에 작업할 그룹과 포함될 그룹 표시
        Write-Host $samaccount" <-- " $_.Sam
        
        # 그룹에 멤버 추가
        Add-ADGroupMember $samaccount -Members $_.Sam 
    }
}

 

멤버 확인

Import-Csv "C:\Temp\GroupSample.csv" | ForEach-Object `
{
    Write-Host "그룹 이름 : " $_.Name
    Get-ADGroup $_.Sam -Properties Members | select name, members
}

 

 

결과 화면

댓글