Netwrix 1Secure는 데이터와 아이덴티티 전반에 걸쳐 통합된 가시성을 제공합니다 - 14일간 무료로 전체 액세스가 가능합니다.무료 평가판 시작

리소스 센터블로그

PowerShell로 AD 계정을 잠그고, 잠금 해제하고, 활성화 및 비활성화하는 방법

PowerShell로 AD 계정을 잠그고, 잠금 해제하고, 활성화 및 비활성화하는 방법

Jan 20, 2025

Active Directory GUI 관리 도구(예: Active Directory Users and Computers (ADUC))는 단일 계정에 대해 작업을 수행하는 데는 적합합니다. 하지만 여러 AD 계정을 처리해야 한다면 PowerShell 이 더 유연한 도구입니다. 이 글에서는 쉼표로 구분된 파일을 사용해 AD 사용자 및 컴퓨터 계정을 개별적으로, 그리고 일괄로 잠그고, 잠금 해제하고, 활성화하고, 비활성화하는 방법을 PowerShell로 보여드리겠습니다.

Active Directory PowerShell cmdlet을 실행하기 전에, 컴퓨터에 PowerShell용 Active Directory 모듈이 설치되어 있어야 합니다. Windows 10을 사용 중이라면 Microsoft 웹사이트에서 Windows 10용 Remote Server Administration Tools (RSAT)를 여기에서 다운로드한 다음 설치하세요. 그런 다음 로컬 관리자 권한으로 PowerShell 프롬프트를 열고 Enable-WindowsOptionalFeature cmdlet을 아래와 같이 실행하여 AD PowerShell 모듈 기능을 활성화합니다:

      Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
      

선택적으로 Update-Help cmdlet을 사용해 도움말 파일도 업데이트할 수 있습니다:

      Update-Help -Module ActiveDirectory -Verbose -Force
      

다른 작업에는 상승된 권한이 필요 없으므로 PowerShell 프롬프트를 반드시 닫으세요. 아래의 지침은 사용자 계정 잠금 해제, 사용자·컴퓨터·서비스 계정 사용/사용 안 함 설정과 같이 Active Directory에서 사용자 계정 작업을 수행할 권한이 있는 어떤 사용자 계정의 보안 컨텍스트에서도 실행할 수 있습니다.

잠긴 Active Directory 계정을 찾는 방법

PowerShell이나 GUI로 Active Directory 계정을 잠글 수는 없습니다. 실제로 그렇게 할 이유도 없습니다. 하지만 Search-ADAccount cmdlet의 도움을 받아 잠긴(락아웃된) 사용자 계정을 검색할 수는 있습니다. 여기서는 Search-ADAccount cmdlet의 결과를 Select-Object cmdlet에 파이프하여 각 잠긴 계정의 NameSamAccountName 특성만 표시합니다:

      Search-ADAccount -LockedOut -UsersOnly | Select-Object Name, SamAccountName
      

잠긴 Active Directory 계정 잠금 해제 방법

다음 명령어를 사용하면 사용자 계정을 손쉽게 잠금 해제할 수 있습니다: Unlock-ADAccount cmdlet. 어떤 계정을 잠금 해제할지 지정하려면 -Identity 매개 변수를 사용하세요. 계정의 고유 이름(distinguished name), 보안 식별자(SID), 전역 고유 식별자(GUID), 또는 Security Account Manager(SAM) 계정 이름을 제공할 수 있습니다. 여기서는 RussellS 계정을 잠금 해제하고 있습니다:

      Unlock-ADAccount -Identity RussellS
      

Active Directory 계정을 활성화하는 방법

어떤 이유로든 계정 개체가 비활성화되었다면, 다음을 사용해 활성화할 수 있습니다: Enable-ADAccount cmdlet:

      Enable-ADAccount -Identity RussellS
      


Active Directory 계정을 비활성화하는 방법

마찬가지로 Disable-ADAccount cmdlet을 사용하여 AD 계정을 비활성화합니다:

Disable-ADAccount -Identity RussellS

CSV 파일에서 사용자 비활성화

쉼표로 구분된(.csv) 텍스트 파일에 나열된 모든 Active Directory 사용자 계정을 비활성화할 수도 있습니다. 파일에는 헤더가 포함되어야 하며, 그 다음 사용자 이름 목록이 행마다 하나씩 들어 있어야 합니다. 제 CSV 파일에는 하나의 열만 있습니다(헤더가 “Name”). 그래서 제 쉼표로 구분된 파일에는 쉼표가 없습니다! CSV 파일에 두 개 이상의 열이 있는 경우, 추가 열은 스크립트에서 단순히 무시됩니다.

Notepad window displaying a list of names: RussellS, BobC, LucyB.

먼저 CSV 파일의 내용을 개체($users)로 가져온 다음, 텍스트 파일의 각 줄에 대해 사용자를 비활성화하는 ForEach 루프를 사용합니다. 다음은 PowerShell 스크립트입니다:

      $users=Import-CSV c:tempusers.csv
ForEach ($user in $users)
{
     Disable-ADAccount -Identity $($user.name)
}
      

Netwrix Directory Manager로 AD 계정 관리

CSV 파일에서 컴퓨터 계정 비활성화

CSV 파일에 나열된 컴퓨터 계정을 비활성화하기 위한 PowerShell 스크립트는 거의 동일합니다. 주요 차이점은 컴퓨터 개체를 비활성화하려는 것이지 사용자 계정 개체를 비활성화하려는 것이 아님을 지정하기 위해 -Identity 매개변수 값 끝에 달러 기호($)를 추가해야 한다는 점입니다. 또한 변수와 파일 이름도 컴퓨터 계정에 더 적합하도록 변경합니다.

스크립트는 다음과 같습니다:

      $computers=Import-CSV c:tempcomputers.csv
ForEach ($computer in $computers)
{
     Disable-ADAccount -Identity "$($computer.name)$"
}
      

결과를 확인하려면 Search-ADAccount cmdlet을 사용하세요:

      Search-ADAccount –AccountDisabled –ComputersOnly | Select-Object Name, SamAccountName
      

활동하지 않는 사용자 비활성화

Search-ADAccountDisable-ADAccount cmdlet은 비활성 사용자 계정을 비활성화하는 데 함께 사용할 수 있습니다. 두 가지 예를 들어 보겠습니다. 먼저 새 timespan 개체($timespan)를 만들고 90일로 설정한 다음, 이를 -TimeSpan 매개변수의 값으로 사용해 최근 3개월 동안 활동하지 않은 계정을 비활성화하겠습니다. -AccountInactive 매개변수는 도메인 기능 수준이 Windows Server 2003 이상이어야 함을 요구합니다.

      $timespan = New-Timespan -Days 90
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $timespan | Disable-ADAccount
      

또 다른 방법은 -DateTime 매개변수를 사용해 특정 날짜 이후로 비활성 상태였던 계정을 반환하는 것입니다. 이 스크립트는 2018년 6월 3일 이후로 활동하지 않은 모든 계정을 비활성화합니다:

      Search-ADAccount -UsersOnly -AccountInactive -DateTime ‘6/3/2018’ | Disable-ADAccount
      

Active Directory가 LastLogOnDate 특성을 동기화하는 방식 때문에, –AccountInactive 매개변수를 Search-ADAccount cmdlet과 함께 지정하면 결과가 최대 9~14일 정도 부정확할 수 있습니다.

보시다시피 PowerShell로 Active Directory 계정의 상태를 관리하는 것은 간단합니다. PowerShell은 객체 지향이므로, 처리하려는 데이터를 포함하는 객체를 쉽게 만들고, 필요한 작업을 수행하는 다른 cmdlet에 전달할 수 있습니다.

공유하기

더 알아보기

저자 소개

Asset Not Found

Russell Smith

IT 컨설턴트

관리 및 보안 기술을 전문으로 하는 IT 컨설턴트이자 저자입니다. Russell은 IT 분야에서 15년 이상의 경력을 보유하고 있으며, Windows 보안에 관한 책을 집필했고 Microsoft의 Official Academic Course (MOAC) 시리즈를 위한 저술에 공동 저자로 참여했습니다.