Active Directory - PowerShell

PowerShell e Active Directory: Reset password e gestione account

La gestione quotidiana degli account Active Directory comprende operazioni come il reset della password, lo sblocco di account bloccati e il controllo della scadenza. Con PowerShell è possibile eseguire queste operazioni singolarmente o in batch su più utenti contemporaneamente.

Sintassi dei comandi

Resettare la password di un utente

Set-ADAccountPassword -Identity "mario.rossi" `
    -NewPassword (ConvertTo-SecureString "NuovaP@ss1!" -AsPlainText -Force) `
    -Reset

Forzare il cambio password al prossimo accesso

Set-ADUser -Identity "mario.rossi" -ChangePasswordAtLogon $true

Sbloccare un account bloccato

Unlock-ADAccount -Identity "mario.rossi"

Verificare se un account è bloccato

Get-ADUser -Identity "mario.rossi" -Properties LockedOut, BadLogonCount, LastBadPasswordAttempt |
    Select-Object Name, LockedOut, BadLogonCount, LastBadPasswordAttempt

Trovare tutti gli account bloccati nel dominio

Search-ADAccount -LockedOut | Select-Object Name, SamAccountName, LastLogonDate

Gestire la scadenza della password

# Impostare una data di scadenza
Set-ADAccountExpiration -Identity "mario.rossi" -DateTime "2026-12-31"

# Rimuovere la scadenza (account senza scadenza)
Clear-ADAccountExpiration -Identity "mario.rossi"

# Verificare la scadenza
Get-ADUser -Identity "mario.rossi" -Properties AccountExpirationDate |
    Select-Object Name, AccountExpirationDate

Trovare account con password scaduta

Search-ADAccount -PasswordExpired | Select-Object Name, SamAccountName, PasswordExpired

Trovare account con password in scadenza nei prossimi N giorni

$giorni = 7
Search-ADAccount -AccountExpiring -TimeSpan (New-TimeSpan -Days $giorni) |
    Select-Object Name, SamAccountName, AccountExpirationDate

Esempio di utilizzo

Scenario: un utente è bloccato dopo troppi tentativi errati. È necessario sbloccare l’account, assegnare una password temporanea e obbligarlo a cambiarla al prossimo accesso.

$utente = "mario.rossi"

# 1. Verificare lo stato dell'account
Get-ADUser -Identity $utente -Properties LockedOut, BadLogonCount |
    Select-Object Name, LockedOut, BadLogonCount

# 2. Sbloccare l'account
Unlock-ADAccount -Identity $utente

# 3. Impostare una password temporanea
Set-ADAccountPassword -Identity $utente `
    -NewPassword (ConvertTo-SecureString "Temp@1234!" -AsPlainText -Force) `
    -Reset

# 4. Forzare il cambio password al prossimo accesso
Set-ADUser -Identity $utente -ChangePasswordAtLogon $true

# 5. Verifica finale
Get-ADUser -Identity $utente -Properties LockedOut, PasswordExpired, ChangePasswordAtLogon |
    Select-Object Name, LockedOut, PasswordExpired, ChangePasswordAtLogon

Output atteso

Name        LockedOut PasswordExpired ChangePasswordAtLogon
----        --------- --------------- ---------------------
Mario Rossi     False           False                  True

L’elenco degli articoli di questa serie può essere consultato qui