Script de PowerShell: Descubrir nuevos usuarios en Active Directory
Apr 18, 2017
Cuando nuevos empleados se unen a una empresa, los técnicos de TI tienen que crear sus cuentas en Active Directory. Más tarde, el especialista de TI da la bienvenida a cada nuevo integrante y les ayuda a iniciar sesión en el dominio. En este artículo, les mostraré cómo automatizar este procedimiento con la ayuda de scripts de PowerShell. Siéntanse libres de editar este script para adaptarlo a sus necesidades particulares.
Esta publicación de blog cubre específicamente los siguientes tres temas:
- Lea la contraseña del correo electrónico como una cadena segura, conviértala en una cadena encriptada y guárdela en un archivo de texto para que los usuarios normales no puedan leerla. Más tarde, el script la lee y la convierte de nuevo en un objeto de cadena segura para ser utilizada como credencial en cmdlets de mensajes de correo electrónico subsiguientes.
- Cree un script para identificar cualquier nuevo usuario agregado en AD en las últimas 24 horas y enviarles un correo electrónico de bienvenida utilizando el servidor SMTP de Gmail.
- Programe el script para que se ejecute diariamente a las 12:00 a.m. en el Programador de tareas con la ayuda de PowerShell.
He utilizado los siguientes cmdlets en esta publicación; los detalles de cada cmdlet están disponibles en el sitio web de Technet.
- Read-Host (para leer la cadena segura desde una línea de comandos como contraseñas de usuario de Gmail)
- Send-MailMessage (para enviar mensajes de correo electrónico utilizando un servidor SMTP)
- Get-Date (para obtener la fecha y hora actuales)
- Get-Content (para leer una contraseña encriptada de un archivo)
- Get-ADUser (para obtener usuarios recién agregados de AD)
- New-ScheduledTaskTrigger (para crear un nuevo disparador de tarea programada)
- Register-ScheduledTask (para programar la nueva tarea en Task Scheduler)
He ejecutado este script en Windows Server 2016. Puedes editarlo de acuerdo con las necesidades de tu entorno. Sigue estos tres pasos para que todo funcione correctamente.
Paso 1. Guarde su contraseña de Gmail como una cadena cifrada en un archivo de texto
Abra PowerShell con privilegios elevados y ejecute el siguiente cmdlet. Esto le solicitará que ingrese una contraseña como una cadena segura y la guarde en un archivo de texto como una cadena cifrada.
Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File “C:Userssecurepassword.txt”
Paso 2. Guarde el script en un archivo con extensión .ps1
Abra el Bloc de notas y copie y pegue el siguiente código. Guarde el archivo como FindOutADUsers.ps1.
##Beginning of functions
Function Send-Email {
Param ($Email, $Credential,$attachment)
$From = "karim.buzdar@gmail.com"
$subject = "Welcome to yourdomain.com"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
### Beginning of email body
$Body = "Dear User,<br><br>"
$Body += "Welcome to yourdomain.com <br><br>"
$Body += " This email will help you log in to your domain services. Follow these steps to log in to your domain: <br><br>"
$Body += "Step 1. Enter your username <br><br>"
$Body += "Step 2. Enter your password, and press enter <br><br>"
$Body += " Please check the attached screenshot. If you have any problems, please call the help desk at following number: <br><br>"
$Body += "<b>Extension No: 121</b><br><br>"
$Body += "Regards,<br><br>"
$Body += "Yourdomain.com Helpdesk"
### End of email body
Send-MailMessage -from $From -to $Email -Subject $subject -BodyAsHtml $Body -Attachments $attachment -SmtpServer $SMTPServer -Port $SMTPPort -Credential $Credential -UseSsl
}
### End of Functions
##### Beginning of main function
$When = ((Get-Date).AddDays(-1))
$UserName = "karim.buzdar@gmail.com" #Gmail username which is used for sending an email
$Password = Get-Content "C:UsersAdministrator.YOURDOMAINDesktopFindOutADUserssecurepassword.txt" | ConvertTo-SecureString #Reading a secure password from file and reversing it back into a secure string object
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($UserName, $Password) #PSCredential for send-mail message cmdlet
$Attachment = "C:UsersAdministrator.YOURDOMAINDesktopFindOutADUsersScreenshot.png" #Image sending as an attachment with email
foreach ($EmailAddress in Get-ADUser -filter {(whencreated -ge $When)} -Properties emailaddress | Select -ExpandProperty emailaddress) #Iterating over each email of users
{
Send-Email -Email $EmailAddress -Credential $Credential -attachment $Attachment
Write-Host "Email sent: $EmailAddress"
}
### End of main function
Paso 3. Programe el script utilizando el Programador de tareas
En el Bloc de notas, cree un archivo nuevo. Pegue el siguiente script y guárdelo con la extensión .ps1.
$Trigger= New-ScheduledTaskTrigger -At 12:00am -Daily #Trigger the task daily at 12 AM
$User= "yourdomainadministrator"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument
"C:UsersAdministrator.YOURDOMAINDesktopFindOutADUsersFindOutADUsers.ps1"
Register-ScheduledTask -TaskName "FindOutADUsers" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force
¡Ejecute el script anterior en PowerShell con privilegios elevados, y listo!
Cuando una tarea programada se ejecuta con éxito, los usuarios recién agregados en Active Directory recibirán el siguiente correo electrónico:
Espero que esta publicación te sea útil. Tus comentarios y opiniones son siempre bienvenidos, especialmente si algo no funciona en este script. ¡Buena suerte!
Contenido relacionado seleccionado:
- Cómo deshabilitar cuentas de usuario inactivas usando PowerShell
- Cómo crear usuarios de AD en masa y enviar sus credenciales por correo electrónico utilizando PowerShell
- Cómo crear nuevos usuarios de Active Directory con PowerShell
- Cómo exportar usuarios específicos de Active Directory
- Cómo restaurar usuarios de Active Directory
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
Crear usuarios de AD en masa y enviar sus credenciales por correo electrónico usando PowerShell
Cómo crear, cambiar y probar contraseñas usando PowerShell
Cómo agregar y eliminar grupos de AD y objetos en grupos con PowerShell
Confianzas en Active Directory
Ataques de ransomware a Active Directory