매년 교육 기관에서는 수백 명의 학생을 모집합니다. 그 결과, 기관의 시스템 엔지니어들은 각 학생에 대해 AD 계정을 생성하고, 학생들에게 사용자 이름과 비밀번호를 수동으로 알려야 하므로 추가 시간과 노력이 필요합니다.
이 단계별 가이드는 PowerShell 스크립팅의 도움으로 시스템 엔지니어들의 업무를 조금 더 쉽게 만들어 줍니다. 이 스크립트를 사용하면 CSV 파일에서 AD 사용자 계정을 만들고, 각 계정에 무작위 비밀번호를 할당한 다음, 환영 이메일로 새 학생들에게 사용자 이름과 비밀번호를 보낼 수 있습니다.
다음 cmdlet을 제 스크립트에서 사용했습니다. 자세한 내용을 보려면 각 cmdlet을 클릭하세요.
- Import-CSV (사용자 세부 정보를 가져오기 위해)
- Get-Credential (이메일 자격 증명을 가져오기 위해)
- Get-Random (비밀번호를 생성하기 위해)
- New-ADUser (새 AD 사용자를 생성하기 위해)
- Get-Content (파일에서 이메일 내용 읽기용)
- Send-MailMessage (사용자에게 이메일을 보내기용)
새 사용자에게 자격 증명(크리덴셜)과 함께 이메일을 보내기 위해 Gmail SMTP 서버를 사용하고 있습니다. 하지만 스크립트를 사용자의 IT 환경과 메일 서버에 맞게 구성할 수 있습니다.
아래 스크립트는 Windows Server 2016에서 실행 중인 DC에서 작성하고 테스트했습니다. Windows Server 2012, 2012 R2, 또는 2008에서 스크립트를 실행해야 한다면 일부 PowerShell 모듈을 가져와야 할 수 있습니다.
스크립트를 실행하기 전에 다음 필수 조건:
- 학생 정보가 포함된 CSV 파일(이름, 성, Sam 계정 이름, 이메일 주소)
- 환영 이메일 메시지가 포함된 텍스트 또는 Word(doc 또는 docx) 파일
- 활성화된 인터넷 연결( Gmail SMTP 서버를 사용하려는 경우)
엄선한 관련 콘텐츠:
이 모든 요구 사항을 충족했다면, 두 가지 간단한 단계에 따라 AD 계정을 만들고 대량으로 환영 이메일을 보낼 수 있습니다:
1단계.
스크립트를 텍스트 파일에 복사하여 붙여넣고, 다음과 함께 저장하세요..ps1 확장자:
##Beginning of functions
Function Format-Email {
Param ([string]$WCEmailContent,[string]$UserPrincipalName,[string]$UserPassword)
return $WCEmailContent + "User Name = $UserPrincipalName
Password = $UserPassword
Thank You
IT Department"
}
Function Send-Email {
Param ($Email, $Credential,[string]$WCEmailContent)
$From = "karim.buzdar@gmail.com"
$subject = "Domain Account Details"
$Body = $WCEmailContent
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
Send-MailMessage -from $From -to $Email -Subject $subject -Body $Body -SmtpServer $SMTPServer -Port $SMTPPort -Credential $Credential -UseSsl
}
###End of Functions
##### Beginning of main programme
$Credential = (get-Credential) #Getting email credentials to be used for From field in Email message
$UsersFilePath = "C:UsersAdministrator.YOURDOMAINDesktopWCusers.csv" # Files of users information (First name, Last name, Sam account name, Email address)
$WCEmailFile = "C:UsersAdministrator.YOURDOMAINDesktopWCWCEmail.docx" # File containing welcome email message
import-csv -path $UsersFilePath | foreach {
$Name = ($_.GivenName + " " + $_.LastName)
$UserPrincipalName = ($_.SamAccountName + ”@yourdomain.com”)
$UserPassword = Get-Random -maximum 20000 -Minimum 100
$UserPassword = "@" + "user" + $UserPassword.ToString()
#Create user in Students OU
new-aduser -name $Name -enabled $true -GivenName $_.GivenName –surname $_.lastName -accountpassword (convertto-securestring $UserPassword -asplaintext -force) -changepasswordatlogon $true -samaccountname $_.SamAccountName –userprincipalname $UserPrincipalName -EmailAddress $_.EmailAddress -Path 'OU=Students,DC=yourdomain,DC=com' -ErrorAction Stop
$WCEmailContent = Format-Email -WCEmailContent (Get-Content $WCEmailFile) -UserPrinciPalName $UserPrincipalName -UserPassword $UserPassword
Send-Email -Email $_.EmailAddress -Credential $Credential -WCEmailContent $WCEmailContent
Write-Host "User Created: $Name"
}
### End of main program
2단계.
관리 권한으로 PowerShell을 열고, 1단계에서 생성한 스크립트 파일을 실행합니다.
스크립트를 성공적으로 실행하면 사용자는 즉시 도메인에 로그인할 수 있습니다. Active Directory Users and Computers 콘솔에서 계정 생성 여부를 확인하고, Send-MailMessage cmdlet에서 CC 필드를 사용하여 계정 생성 알림을 이메일로 보낼 수 있습니다.
최근 게시물을 확인해서 AD에 추가된 신규 사용자를 지난 24시간 내에 찾아내는 방법 과 PowerShell을 사용해 해당 사용자의 자격 증명을 이메일로 보내는 방법을 알아보세요. How-to: Export Specific Users from Active Directory 또한 AD 사용자를 CSV로 내보내달라는 요청을 자주 받는 경우 참고해 보셔도 좋습니다.
스크립트 기능을 개선할 수 있도록 의견을 댓글로 남겨 주세요.
공유하기
더 알아보기
저자 소개
Karim Buzdar
지원 엔지니어
서버 인프라 분야의 IT 엔지니어이자 Microsoft Certified Solutions Associate (MCSA)입니다. 기술 저자로서 Karim은 Microsoft Directory Services와 PowerShell에 집중합니다.