New-ADUser로 Active Directory 사용자 생성 자동화하기

당신은 Active Directory (AD) 사용자 및 컴퓨터 (ADUC)를 여는 것에 지친 것 같습니다. 타이핑 오류를 만들고 동작을 수행하면서 오늘 여섯 번째로 새로운 사용자 계정을 만들고 있는 것 같습니다. 그렇다면 PowerShell을 사용하여 Active Directory를 사용하여 사용자를 추가하는 프로세스를 자동화해야 합니다. New-ADUser cmdlet을 사용하세요!

금요일 저녁이며 주말에 집에 가기 한 시간 전입니다. 한 주가 바빴으므로 가장 가까운 친구들과 큰 경기를 보기로 결정했습니다. 그러나 상사가 가볍게 다가와 “이메일을 받았나요? 오늘 마감 전에 처리할 수 있을까요?”라고 물어봅니다. 빠르게 Microsoft Outlook를 열고 HR 부서에서 메일을 받았으며, 상사가 참조로 cc된 이메일이라는 것을 알 수 있습니다. 사무실을 떠나기 전에 새로운 직원 400명의 Active Directory (AD) 계정을 만들어 달라는 요청입니다. 좋아요. 경기를 버릴 수밖에 없겠군요.

빠르게 인터넷을 검색하여 이 사용자 계정을 생성하는 프로세스를 빠르게 할 수 있는 옵션을 찾아보면, 명령줄과 PowerShell cmdlet인 New-ADUser를 사용하여 AD 계정 프로비저닝을 자동화할 수 있다는 것을 알게 됩니다.

일반적으로 관리자는 Active Directory 사용자 및 컴퓨터 MMC 스냅인을 사용하여 AD 계정을 수동으로 생성합니다. 이는 원격 서버 관리 도구 (RSAT)를 통해 데스크톱 컴퓨터에 설치됩니다. 그러나 이 방법으로 AD 사용자를 생성하는 데는 평균적으로 사용자 당 세 분이 걸립니다. AD 사용자 계정을 만드는 것은 매력적인 작업이 아니며, 자동화할 수 있는 작업입니다.

관리자가 New-AdUser cmdlet을 사용하여 AD 사용자 계정 개체를 만드는 세 가지 일반적인 방법이 있습니다.

  1. 필요한 및 추가 cmdlet 매개변수를 사용하여 Active Directory 사용자 계정을 추가합니다.
  2. 새 계정을 만들기 위해 Instance 매개변수를 사용하여 기존 AD 사용자 개체를 복사합니다.
  3. Import-Csv cmdlet을 New-ADUser cmdlet과 함께 사용하여 쉼표로 구분된 값 (CSV) 파일을 사용하여 여러 Active Directory 사용자 개체를 생성합니다.

이러한 방법은 때로는 함께 조합하여 더 효율적인 솔루션을 만들 수 있습니다. 예를 들어, 세 가지 옵션을 모두 사용하여 CSV 파일을 사용하여 복사할 수 있는 템플릿 AD 계정을 만들어 여러 개의 새 AD 계정을 생성할 수 있습니다.

이 문서에서는 각각의 방법을 활용하여 New-AdUser를 사용하는 방법을 배우게 됩니다.

ManageEngine ADManager Plus를 사용하여 Active Directory, Exchange 및 Microsoft 365를 관리하고 보고하세요. 무료 평가판 다운로드!

전제 조건/요구 사항

New-AdUser cmdlet을 사용하기 전에 몇 가지 전제 조건을 충족해야 합니다.

  • Windows PowerShell 5.1
  • 원격 서버 관리 도구 (RSAT) 패키지가 설치되었습니다. 이 패키지는 Active Directory PowerShell 모듈을 설치하며 New-AdUser cmdlet을 포함합니다.
  • 사용자 계정을 생성하려는 동일한 도메인에 있는 Windows 컴퓨터에 로그인했습니다.
  • 새로운 사용자 계정을 만들 권한이 있는 AD 사용자 계정으로 로그인하였습니다.

이러한 요구 사항을 충족하면 시작할 준비가 되었습니다!

New-ADUser cmdlet을 사용하여 단일 사용자 계정 생성

기본 수준에서 New-ADUser가 작동하는 방법을 보여주기 위해 먼저 단일 사용자 계정을 생성해 봅시다. New-ADUser에는 필수 매개변수가 많지 않다는 것을 알 수 있습니다. 사실, 필수 매개변수는 Name 매개변수뿐이지만 일반적으로 단독으로 사용되지 않습니다.

일반적으로 많은 다른 매개변수를 사용하여 사용자 계정을 생성합니다. 다행히 대부분의 매개변수는 직관적이며 ADUC에서 확인할 수 있는 것과 일치합니다. 아래 예제에서는 많은 매개변수를 쉽게 사용할 수 있습니다. 각 매개변수는 대략 하나의 사용자 계정 속성과 대응됩니다.

예제에서는 역따옴표를 사용하고 있습니다. 이는 가독성을 위해 긴 한 줄을 방지하기 위한 것입니다.

PS51> New-ADUser `
    -Name "Kevin Sapp" `
    -GivenName "Kevin" `
    -Surname "Sapp" `
    -SamAccountName "kesapp-test" `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -ChangePasswordAtLogon $True `
    -Company "Code Duet" `
    -Title "CEO" `
    -State "California" `
    -City "San Francisco" `
    -Description "Test Account Creation" `
    -EmployeeNumber "45" `
    -Department "Engineering" `
    -DisplayName "Kevin Sapp (Test)" `
    -Country "us" `
    -PostalCode "940001" `
    -Enabled $True

AD 사용자 개체가 포함된 조직 단위 (OU)에는 중복된 SamAccountName이 없어야 합니다.

이제 계정이 생성되었으므로 Get-ADUser cmdlet을 사용하여 계정이 생성되었는지 확인합니다.. 아래에서는 Get-ADUser가 방금 생성된 사용자 계정에 대해 몇 가지 일반적인 속성을 반환하는 것을 볼 수 있습니다.

PS51> Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City

DistinguishedName : CN=Kevin Sapp,CN=Users,DC=mylab,DC=local
Enabled           : True
GivenName         : Kevin
Name              : Kevin Sapp
ObjectClass       : user
ObjectGUID        : 3b18338d-b3c7-4d00-a54a-1d3121e1363f
SamAccountName    : kesapp-test
SID               : S-1-5-21-1181311581-1397355964-1468337501-1109
Surname           : Sapp
UserPrincipalName : kesapp-test@mylab.local

기존 AD 사용자 개체 복사하기

새 AD 계정의 템플릿으로 기존 AD 사용자 개체를 복사하여 계정을 생성하는 또 다른 방법이 있습니다. 이 접근 방식의 몇 가지 이점은 다음과 같습니다:

  • 개별 매개변수를 지정하는 시간을 절약합니다.
  • AD 계정 생성을 표준화하는 데 도움이 됩니다.
  • 수동 계정 생성으로 인한 인적 오류를 방지하고 동일한 팀의 직원들이 동일한 사용자 정의 AD 속성을 가질 수 있도록 합니다.

이 예제에서는 방금 생성된 계정을 템플릿(kesapp-test)으로 사용합니다. 아마도 state, location, department, countrycity AD 속성이 동일한 새 사용자 계정을 만들어야 할 것입니다. 이 새 계정은 직원 James Brown을 위한 것입니다.

이 접근 방식의 제한이 있으며 아래 링크에서 나열된 다음 AD 계정 속성만이 이 프로세스로 복사될 수 있습니다. 자세한 내용은 사용자 속성 복사 Microsoft 문서 페이지를 확인하십시오.

첫 번째 단계는 Properties 매개 변수를 통해 복사할 모든 속성이 제공되는 AD 사용자 계정 템플릿을 찾는 것입니다. 이를 위해 아래에 표시된대로 Get-ADUser cmdlet을 사용합니다. 이는 단순히 AD 사용자 개체를 $template_account 변수에 저장합니다.

두 번째 줄에서는 템플릿 개체의 UserPrincipalName (UPN) 속성을 $null로 설정하는 것에 유의하세요. 이렇게 함으로써 템플릿의 UPN이 고유하도록 보장할 수 있습니다. 각 AD 사용자 계정은 고유한 UPN을 가져야 합니다.

$template_account = Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City
$template_account.UserPrincipalName = $null

템플릿 사용자 계정을 캡처한 후, 해당 개체를 Instance 매개 변수의 값으로 사용하고 다른 속성을 채우기 위해 사용자별 매개 변수를 제공할 수 있습니다. 아래에 표시된 것처럼 작성하세요.

New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

이제 템플릿 개체를 통해 James의 계정을 모든 허용된 AD 속성과 함께 가져올 수 있어야 합니다.

사용자 계정 템플릿 주의사항

이 접근 방식에서 흔히 하는 실수 중 하나는 템플릿 개체를 캡처할 때 * 와일드카드를 Properties 매개 변수에 사용하는 것입니다. 관리자는 이를 원하는 이유로 모든 사용자 계정 속성을 한 번에 복사하려고 합니다. 하지만 이 방법은 작동하지 않습니다.

예를 들어, 아래 명령은 오류를 발생시킵니다:

$template_account = Get-ADUser -Identity kesapp-test -Properties *
New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -UserPrincipalName '[email protected]' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

이 접근 방식의 문제는 UserPrincipalName 속성이 AD Forest 전체에서 고유해야 한다는 것입니다. 따라서 UPN은 New-ADUser 명령에서 덮어쓰거나 템플릿 변수에서 null로 설정되어야 합니다.

$template_account.UserPrincipalName = $null

와일드카드 접근 방식을 사용하는 것이 실패하는 또 다른 이유는 와일드카드에 의해 복사되는 일부 AD 속성이 읽기 전용인 것입니다 (보안 계정 관리자에 의해 소유됨).

Permission error when copying AD objects

CSV 파일을 사용하여 새 사용자 계정 만들기

배운 내용을 한 단계 더 나아가서 CSV 파일에서 직원 계정을 읽고 New-ADUser를 사용하여 AD 사용자 계정을 생성할 수 있습니다.

이 솔루션은 많은 조직에서 HR 시스템과 함께 사용되어 새 직원 온보딩 정보를 생성하는 평면 파일을 자동화하기 위해 계정 생성을 자동화하는 데 자주 사용됩니다.

CSV 파일로 새 직원 목록을 받았다고 가정해 봅시다. CSV 파일의 각 행은 단일 행을 나타내며 다음 열이 있습니다: FirstName, LastName, Department, State, EmployeeIDOffice. 사용자 로그인 계정의 네이밍 규칙은 직원의 성과 이름의 첫 글자를 연결한 것입니다. 예를 들어 직원 Kevin Sapp의 경우 ksapp와 같습니다.

FirstName, LastName, Department, State, EmployeeID, Office, UserPrincipalName, SamAccountName, Password
Micheal, Jordan, NBA, Chicago, 23, Chicago Bulls, mjordan@mylab.local, mjordan, p@ssw0rd1
Lebron, James, NBA, Los Angeles,24, LA Lakers,ljames@mylab.local, ljames, p@ssw0rd2
Dwayne, Wade, NBA, Miami, 13, Miami Heat, dwade@mylab.local, dwade, p@ssw0rd3
$import_users = Import-Csv -Path sample.csv

CSV 파일이 준비되면 Import-Csv를 사용하여 CSV 파일을 읽고 각 행을 단일 개체로 캡처합니다. 그런 다음 각 행을 반복하여 CSV 파일의 적절한 필드를 New-ADUser의 예상 매개변수에 전달합니다. 아래에 이에 대한 예제가 나와 있습니다.

$import_users | ForEach-Object {
    New-ADUser `
        -Name $($_.FirstName + " " + $_.LastName) `
        -GivenName $_.FirstName `
        -Surname $_.LastName `
        -Department $_.Department `
        -State $_.State `
        -EmployeeID $_.EmployeeID `
        -DisplayName $($_.FirstName + " " + $_.LastName) `
        -Office $_.Office `
        -UserPrincipalName $_.UserPrincipalName `
        -SamAccountName $_.SamAccountName `
        -AccountPassword $(ConvertTo-SecureString $_.Password -AsPlainText -Force) `
        -Enabled $True
}

ManageEngine ADManager Plus로 Active Directory, Exchange 및 Microsoft 365을 관리하고 보고하세요. 무료 평가판 다운로드!

개요

이 글에서는 세 가지 다른 방법을 사용하여 새로운 사용자 계정을 프로비저닝하는 방법을 배웠습니다:

  1. 단일 계정 생성
  2. 템플릿에서 사용자 계정 복사
  3. CSV 파일을 사용하여 여러 계정 생성

이러한 방법은 환경에서 새로운 사용자를 프로비저닝하는 기본적인 방법입니다. 이러한 방법들은 PowerShell 함수와 모듈을 만들어 함께 묶을 때 효과적으로 작동합니다. 심지어 CSV 파일 대신 SQL이나 Oracle 데이터베이스를 소스로 사용하여 자체 자동화 프로세스를 만들어 나아갈 수도 있습니다. 고유한 요구 사항과 사용 사례에 따라 각 방법을 활용해 주세요.

이 정보가 급박한 상황에서 도움이 되기를 바랍니다! 새로운 기술을 배워 친구들과 함께 파티에 참석할 수 있었고, 업무-일상 균형을 희생하지 않고도 성공했습니다!

더 읽어보기

Source:
https://adamtheautomator.com/new-aduser/