Tempo stimato di lettura: 3 minuti

Per lavoro ho avuto necessità di creare uno script che facesse 3 cose e le facesse “autonomamente”, così ho adottato la soluzione migliore che si potesse adottare: creare lo script powershell reset user password!

Script Powershell Reset User Password è uno script creando in powershell che… non fa altro che resettare la password di un account utente specifico, presente in Active Directory, creandone una temporanea “strong” e impostando – inoltre – l’obbligo di cambio password al primo accesso.

Cercando in giro, in rete, ho assemblato 3 script diversi, – attingendo da ognuno una parte utile al mio scopo – e ne ho creato uno da poter utilizzare ovunque, senza problemi e senza doverlo personalizzare.

Sostanzialmente, cosa fa questo script? Semplicemente resetta la password dell’account utente di active directory che si andrà a specificare e ne genera una temporanea e “strong”, imposta – inoltre – l’obbligo di cambio password al primo accesso. Utile no?

Condivido con voi il codice dello script. Non occorre nessuna personalizzazione, basta avviarlo con un’utenza che abbia privilegi di reset su altre utenze in AD.


<# Set temporary password per AD user Roberto Bonfa' Versione : 1.2 (aggiunta opzione "protect from accidental deletion") Script creato per reset e assegnazione di una password temporanea ad un determinato utente in AD #>

<# Import il modulo di AD #>
Import-Module Activedirectory

<# Questo è il file che viene generato con il nome dell'utente e la password impostata. Se un utente viene resettato più volte, al suo interno ci sarà uno storico delle pwd impostate, con la più recente in basso #>
[String]$path= ".\$name.txt"

<# Required Assembly to Generate Passwords #>
Add-Type -Assembly System.Web

<# Richiesta del nome utente da cercare in AD #>
$Name=Read-Host "Inserisci il nome utente a cui resettare la password..."

<# Ricerca del nome utente specificato in tutta AD #>
$users=Get-ADUser -identity $Name

<# Impostazione della variabile NewPassword con caratteristica di 10 caratteri, di cui almeno 2 speciali #>
$NewPassword=[Web.Security.Membership]::GeneratePassword(10,2)

<# Cambio la password dell'utente specificato e imposto il flag su "User must change password at next logon" e protegge dalla cancellazione accidentale #>
Set-ADAccountPassword -Identity $Name -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $NewPassword -Force)
Get-ADUser -Identity $Name | Set-ADUser -ChangePasswordAtLogon:$true
Get-ADUser -Identity $Name | Set-ADObject -ProtectedFromAccidentalDeletion:$true

<# Scrittura del file in cui sono salvati nome utente e password #>
Write-Output "UserID: $name `t Password: $NewPassword" `n`n|FT -AutoSize >>"$name.txt"

<# Apertura del file scritto #>
Invoke-Item ".\$name.txt"

Abbiamo terminato con lo script… Ora dovete solo metterlo su un server o un PC che abbia accesso al dominio e utilizzare un’utenza come Domain Admins. Buon test!

P.S.: Se volete scaricare direttamente lo script, potete prelevarlo direttamente qui sotto (tasto destro + “salva link con nome”)

Scarica “set_temp_usr_pwd”

(Visited 9 times, 1 visits today)