Home » Blog » Solarwinds MSP » Script PowerShell: Rileva nuovi utenti in Active Directory
Menù Rapido
Script PowerShell: Rileva nuovi utenti in Active Directory
Quando dei nuovi utenti si uniscono all’azienda, gli amministratori IT devono creare i loro account nell’Active Directory. Dopodichè tutti gli specialisti daranno il benvenuto ai nuovi arrivati e li aiuteranno a fare il log in nel dominio. In questo articolo vi mostreremo come automatizzare questa procedura con l’aiuto dello scripting PowerShell. Sentitevi liberi di modificare questo script a seconda delle vostre esigenze.
Questo post riguarda soprattutto i seguenti aspetti:
- Leggere la password della posta elettronica come una stringa protetta, convertirla in una stringa crittografata e salvarla in un file di testo in modo che gli utenti normali non possano leggerla. Più tardi, lo script legge il file e lo converte in un oggetto stringa protetto da utilizzare come credenziale nei cmdlet successivi dei messaggi di posta elettronica.
- Creare uno script per identificare i nuovi utenti aggiunti in AD nelle ultime 24 ore e inviargli una mail di benvenuto usando il server SMTP di Gmail.
- Schedulare lo script per essere eseguito giornalmente alle 12:00 nella Pianificazione degli Eventi con l’aiuto del PowerShell.
Ho usato il seguente cmdlets in questo post; i dettagli del cmdlet sono disponibili nel sito di Technet.
- Read-Host (per leggere la string sicura da una linea di comando come user e password di Gmail)
- Send-MailMessage (per inviare email usando un server SMTP)
- Get-Date (per ricavare ora e data corrente)
- Get-Content (per leggere una password crittografata da un file)
- Get-ADUser (per ricavare i nuovi user aggiunti nell’AD)
- New-ScheduledTaskTrigger (per creare un nuovo evento per una task schedulata)
- Register-ScheduledTask (per schedulare una nuova task nel Task Scheduler)
Ho eseguito questo script in un Windows Server 2016. Potete modificare lo script a seconda delle necessità del vostro ambiente. Seguite questi 3 passi per far funzionare correttamente la procedura.
Step 1. Salvare la propria password Gmail come stringa crittografata in un file di testo
Aprire il PowerShell con i privilegi avanzati ed eseguire il seguente cmdlet. In questo modo viene richiesto di inserire una password che diventerà una stringa protetta e verrà poi salvata nel file di testo come stringa crittografata.
Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File “C:\Users\securepassword.txt” |
Step 2. Salvare lo script in un File con l’estensione .ps1
Aprire il Notepad e fare copia e incolla del seguente codice. Salvare il file come 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,
“
$Body += “Welcome to yourdomain.com
“
$Body += ” This email will help you log in to your domain services. Follow these steps to log in to your domain:
“
$Body += “Step 1. Enter your username
“
$Body += “Step 2. Enter your password, and press enter
“
$Body += ” Please check the attached screenshot. If you have any problems, please call the help desk at following number:
“
$Body += “Extension No: 121
“
$Body += “Regards,
“
$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:\Users\Administrator.YOURDOMAIN\Desktop\FindOutADUsers\securepassword.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:\Users\Administrator.YOURDOMAIN\Desktop\FindOutADUsers\Screenshot.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
Step 3. Schedulare lo script utilizzando il pianificatore di eventi
Creare un nuovo file nel Notepad. Incollare il seguente script e salvarlo con l’estensione .ps1.
$Trigger= New-ScheduledTaskTrigger -At 12:00am -Daily #Trigger the task daily at 12 AM
$User= “yourdomain\administrator”
$Action= New-ScheduledTaskAction -Execute “PowerShell.exe” -Argument
“C:\Users\Administrator.YOURDOMAIN\Desktop\FindOutADUsers\FindOutADUsers.ps1”
Register-ScheduledTask -TaskName “FindOutADUsers” -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force
Controllate pure i miei post precedenti per imparare come CREARE UTENTI AD in bulk e inviargli per email le loro credenziali usando il PowerShell.
Spero che questo post vi sia utile. I vostri feedback e i vostri commenti sono sempre i benvenuti, specialmente se qualcosa non ha funzionato con lo script. Buona Fortuna!
Fonte: HTTPS://BLOG.NETWRIX.COM/2017/04/18/POWERSHELL-SCRIPT-DISCOVER-NEW-USERS-IN-ACTIVE-DIRECTORY/