当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 批量创建 AD 用户并通过电子邮件发送其凭据

作者:精品下载站 日期:2024-12-14 06:13:48 浏览:11 分类:玩电脑

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


每年,教育机构招收数百名学生。因此,机构的系统工程师需要额外的时间和精力为每个学生创建一个 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 = "[email protected]"
$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 用户和计算机控制台中验证帐户创建,并使用 Send-MailMessage cmdlet 中的抄送字段通过电子邮件发送有关帐户创建的通知。

查看我最近的帖子,了解如何发现过去 24 小时内添加到 AD 中的新用户,并使用 PowerShell 通过电子邮件发送他们的凭据。如果经常要求您将 AD 用户导出到 CSV,您也可以尝试此操作方法:从 Active Directory 导出特定用户。

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

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯