每年,教育机构都会招收数百名学生。因此,机构的系统工程师需要投入更多时间和精力:为每位学生创建一个 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 字段发送有关账户创建的通知邮件。
查看我最近的文章,了解如何 发现过去 24 小时内新增到 AD 的用户 并使用 PowerShell 通过邮件发送他们的凭据。你也可以尝试此 How-to: Export Specific Users from Active Directory ,如果你经常被要求将 AD 用户导出为 CSV。
欢迎在评论中留下您的建议,以便我们增强脚本功能。
分享到
了解更多
关于作者
Karim Buzdar
支持工程师
IT 工程师,并获得服务器基础架构方向的 Microsoft Certified Solutions Associate (MCSA)。作为技术作者,Karim 关注 Microsoft Directory Services 和 PowerShell。