Magic Quadrant™ para la gestión de acceso privilegiado 2025: Netwrix reconocida por cuarto año consecutivo. Descarga el informe.

Plataforma
Centro de recursosBlog
Script de PowerShell: Descubrir nuevos usuarios en Active Directory

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:

  1. 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.
  2. 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.
  3. 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.

  1. Read-Host (para leer la cadena segura desde una línea de comandos como contraseñas de usuario de Gmail)
  2. Send-MailMessage (para enviar mensajes de correo electrónico utilizando un servidor SMTP)
  3. Get-Date (para obtener la fecha y hora actuales)
  4. Get-Content (para leer una contraseña encriptada de un archivo)
  5. Get-ADUser (para obtener usuarios recién agregados de AD)
  6. New-ScheduledTaskTrigger (para crear un nuevo disparador de tarea programada)
  7. 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:

Image

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!

Compartir en

Aprende más

Acerca del autor

Asset Not Found

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.