Netwrix 1Secure 提供跨数据和身份的统一可见性——免费试用14天,享有完全访问权限。开始免费试用

资源中心博客

使用 PowerShell 批量创建 AD 用户并通过电子邮件发送其凭据

使用 PowerShell 批量创建 AD 用户并通过电子邮件发送其凭据

Mar 17, 2023

每年,教育机构都会招收数百名学生。因此,机构的系统工程师需要投入更多时间和精力:为每位学生创建一个 AD 账号,然后再手动告知学生他们的用户名和密码。

这份循序渐进的指南借助 PowerShell 脚本来让系统工程师的工作稍微轻松一些。该脚本可以让你从 CSV 文件创建 AD 用户账号,为其分配随机密码,然后在欢迎邮件中把用户名和密码发送给新学生。

我在脚本中使用了以下 cmdlet。点击任意单个 cmdlet 查看更多详细信息。

为了向新用户发送包含凭据的邮件,我使用的是 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。

欢迎在评论中留下您的建议,以便我们增强脚本功能。

分享到

了解更多

关于作者

Asset Not Found

Karim Buzdar

支持工程师

IT 工程师,并获得服务器基础架构方向的 Microsoft Certified Solutions Associate (MCSA)。作为技术作者,Karim 关注 Microsoft Directory Services 和 PowerShell。