Crear usuarios de AD en masa y enviar sus credenciales por correo electrónico usando PowerShell
Mar 30, 2017
Cada año, las instituciones educativas matriculan a cientos de estudiantes. Como resultado, los ingenieros de sistemas de las instituciones requieren tiempo y esfuerzo adicionales para crear una cuenta de AD para cada estudiante y luego informar manualmente a los estudiantes sobre sus nombres de usuario y contraseñas.
Esta guía paso a paso hará la vida de los ingenieros de sistemas un poco más fácil con la ayuda de scripts de PowerShell. El script te permite crear cuentas de usuario de AD desde un archivo CSV, asignar contraseñas aleatorias a las mismas y luego enviar esos nombres de usuario y contraseñas a los nuevos estudiantes en correos electrónicos de bienvenida.
He utilizado los siguientes cmdlets en mi script. Haga clic en cualquier cmdlet individual para obtener más detalles.
- Import-CSV (para importar detalles de usuario)
- Get-Credential (para obtener credenciales de correo electrónico)
- Get-Random (para generar contraseñas)
- New-ADUser (para crear nuevos usuarios de AD)
- Get-Content (para leer el contenido de correos electrónicos desde un archivo)
- Send-MailMessage (para enviar correos electrónicos a usuarios)
Para enviar los correos electrónicos con las credenciales a los nuevos usuarios, estoy utilizando un servidor SMTP de Gmail. Sin embargo, puedes configurar el script para adaptarlo a tu entorno de TI y a tu propio servidor de correo. El script que aparece a continuación fue escrito y probado en un controlador de dominio (DC) que ejecuta Windows Server 2016. Si necesitas ejecutarlo en Windows Server 2012, 2012 R2 o 2008, es posible que tengas que importar algunos módulos de PowerShell.
Antes de ejecutar el script, verifique los siguientes prerequisites:
- Un archivo CSV con la información de los estudiantes (nombre, apellido, nombre de cuenta Sam y dirección de correo electrónico)
- Un archivo de texto o Word (doc o docx) con un mensaje de correo electrónico de bienvenida
- Una conexión a Internet activa (si desea utilizar un servidor SMTP de Gmail)
Contenido relacionado seleccionado:
Si ha cumplido con todos estos requisitos, puede crear cuentas de AD y enviar correos electrónicos de bienvenida en masa siguiendo dos sencillos pasos:
Paso 1.
Copie y pegue el script en un archivo de texto y guárdelo con la extensión .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
Paso 2.
Abra PowerShell con sus privilegios elevados y ejecute el archivo de script que creó en el Paso 1.
Una vez que haya ejecutado el script con éxito, los usuarios pueden iniciar sesión inmediatamente en el dominio. Puede verificar la creación de la cuenta en la consola de Active Directory Users and Computers y enviar la notificación sobre la creación de la cuenta utilizando el campo CC en el cmdlet Send-MailMessage.
Echa un vistazo a mi publicación reciente para aprender cómo descubrir nuevos usuarios agregados en AD en las últimas 24 horas y enviar sus credenciales por correo electrónico usando PowerShell. También puedes intentar esto How-to: Export Specific Users from Active Directory si te piden frecuentemente exportar usuarios de AD a CSV.
No dude en dejar sus sugerencias en los comentarios para que podamos mejorar la funcionalidad del script.
Compartir en
Aprende más
Acerca del autor
Karim Buzdar
Ingeniero de Soporte
Ingeniero de TI y Microsoft Certified Solutions Associate (MCSA) para Server Infrastructure. Como autor técnico, Karim se centra en Microsoft Directory Services y PowerShell.
Aprende más sobre este tema
Leyes de Privacidad de Datos por Estado: Diferentes Enfoques para la Protección de la Privacidad
Ejemplo de Análisis de Riesgos: Cómo Evaluar los Riesgos
El Triángulo de la CIA y su Aplicación en el Mundo Real
¿Qué es la gestión de registros electrónicos?
Análisis Cuantitativo de Riesgo: Expectativa de Pérdida Anual