At actual field

Powershell을 통한 Active Directory의 객체 정보 수정

Sergemeow 2024. 1. 11. 00:08

 

Active Directory의 유저 계정 CRUD 업무를 인계 받았다. 

신규입사자들을 위한 계정을 한방에 생성하기 위한 파워쉘 명령어와 전체 계정의 유저 네임을 텍스트로 export하는 명령어도 전달 받았는데, 파워쉘 명령어는 낯설긴 하지만 두가지를 보니 약간은 SQL과 자바스크립트와 유사하다는 인상을 받았다. 


여기에 자세하게는 작성할 수 없지만, 마침 특정 유형의 사용자들이 매번 로그인하기에 암호가 너무 번거롭다며 그들 계정의 암호를 간단하게 일괄변경해줄 수 없냐는 문의를 받았고.. 당연히 내가 내 맘대로 그렇게합죠 할 수는 없는 법. 보안상 리스크가 크기에 승인될리는 없을 듯 하지만 이 기회에 AD상 다수의 객체에 대한 property를 일괄 수정하는 테스트를 돌려보았다. 

$ouPath = "OU=certainOU,OU=parentOU,DC=domain,DC=com"
$newPassword = ConvertTo-SecureString -String "NewPassword" -AsPlainText -Force

$users = get-ADUser -Filter * -SearchBase "$ouPath"
foreach ($user in $users) {
    try {
        Set-ADAccountPassword -Identity $user -NewPassword $newPassword -Reset
        Write-Host "Password changed for $($user.Name)"
    } catch {
        Write-Host "Error occurs with $($user.Name): $_" -ForegroundColor Red
    }
}

굳이 상단의 두가지는 변수 선언을 해줄 필요는 없었지만 나중에 어떻게 수정해서 써야할지 모르니 깔끔하게 해뒀다. 

 

막 신규 OU에 신규 계정을 생성하였었기에 해당 계정 객체들로 테스트할 수 있었다. 

 

에러가 떴으면 떴지 기존 다른 데이터에 문제를 일으킬 가능성은 낮았지만 두근거리는 마음으로 Run.

 

다행스럽게도 모두 잘 변경되었다! 


차후 AD내 다수의 객체들에 대한 수정이 필요할 때 클릭 노가다를 하지 않고도 어느정도 시도해볼 수 있을 것 같다. 


5.18 업데이트

 

얼마전 대대적인 인사 개편으로 아주 많은 수의 계정들을 수정해야할 일이 있었다. 감사하게도 나의 보스가 믿고 맡겨줬고 깔끔하게 모두 수정 완료하였다!