Magic Quadrant™ per la gestione degli accessi privilegiati 2025: Netwrix riconosciuta per il quarto anno consecutivo. Scarica il report.

Piattaforma
Centro risorseBlog
Script PowerShell: Scopri nuovi utenti in Active Directory

Script PowerShell: Scopri nuovi utenti in Active Directory

Apr 18, 2017

Quando nuovi dipendenti entrano in un'azienda, i tecnici IT devono creare i loro account in Active Directory. Successivamente, lo specialista IT accoglie ogni nuovo arrivato e li aiuta ad accedere al dominio. In questo articolo, vi mostrerò come automatizzare questa procedura con l'aiuto di script PowerShell. Sentitevi liberi di modificare questo script per adattarlo alle vostre esigenze particolari.

Questo post del blog copre specificamente i seguenti tre argomenti:

  1. Leggi la password dell'email come una stringa sicura, convertila in una stringa criptata e salvala in un file di testo in modo che gli utenti normali non possano leggerla. In seguito, lo script la legge e la converte nuovamente in un oggetto stringa sicura da utilizzare come credenziale nei successivi cmdlet dei messaggi email.
  2. Crea uno script per identificare tutti i nuovi utenti aggiunti in AD nelle ultime 24 ore e inviare loro un'email di benvenuto utilizzando il server SMTP di Gmail.
  3. Programma lo script per l'esecuzione giornaliera alle 12:00 a.m. nel Task Scheduler con l'aiuto di PowerShell.

Ho utilizzato i seguenti cmdlet in questo post; i dettagli di ogni cmdlet sono disponibili sul sito web di Technet.

  1. Read-Host (per leggere la stringa sicura da una riga di comando come password utente Gmail)
  2. Send-MailMessage (per inviare messaggi email tramite un server SMTP)
  3. Get-Date (per ottenere la data e l'ora attuali)
  4. Get-Content (per leggere una password criptata da un file)
  5. Get-ADUser (per ottenere gli utenti appena aggiunti da AD)
  6. New-ScheduledTaskTrigger (per la creazione di un nuovo trigger di attività pianificata)
  7. Register-ScheduledTask (per programmare il nuovo compito in Task Scheduler)

Ho eseguito questo script su Windows Server 2016. Puoi modificarlo in base alle esigenze del tuo ambiente. Segui questi tre passaggi per far funzionare tutto.


Passaggio 1. Salva la tua password di Gmail come stringa crittografata in un file di testo

Apri PowerShell con privilegi elevati ed esegui il seguente cmdlet. Questo ti chiederà di inserire una password come stringa sicura e salvarla in un file di testo come stringa crittografata.

      Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File “C:Userssecurepassword.txt”
      


Passaggio 2. Salva lo script in un file con estensione .ps1

Apri Notepad e copia e incolla il seguente codice. Salva il file con il nome 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
      


Passaggio 3. Programma lo script utilizzando Task Scheduler

In Notepad, crea un nuovo file. Incolla lo script seguente e salvalo con l'estensione .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
      

Esegui lo script sopra in PowerShell con privilegi elevati, e hai finito!

Quando un'attività pianificata viene eseguita con successo, i nuovi utenti aggiunti in Active Directory riceveranno la seguente email:

Image

Spero che questo post ti sia utile. I tuoi commenti e feedback sono sempre ben accetti, specialmente se qualcosa non funziona in questo script. Buona fortuna!

Condividi su

Scopri di più

Informazioni sull'autore

Asset Not Found

Karim Buzdar

Ingegnere di supporto

Ingegnere IT e Microsoft Certified Solutions Associate (MCSA) per l'infrastruttura del server. Come autore tecnico, Karim si concentra sui servizi di directory Microsoft e PowerShell.