Unlock-ADUserAccount — odblokowanie konta AD

🏢 Active Directory POWERSHELL

Odblokowuje zablokowane konto AD i opcjonalnie wymusza reset hasła przy następnym logowaniu

Pobierz .ps1

Opis

Skrypt do obsługi zablokowanych kont użytkowników — helpdesk II linii. Funkcje: - Sprawdza aktualny status blokady i liczbę złych prób - Odblokowuje konto (Unlock-ADAccount) - Opcjonalnie: -ResetPassword — wymusza zmianę hasła przy logowaniu - Wyświetla stan konta przed i po operacji - Ostrzega jeśli konto jest wyłączone Użycie: .\Unlock-ADUserAccount.ps1 -Identity jkowalski [-ResetPassword]

🕒 2026-04-13 📦 Źródło: own
skrypt.ps1
#Requires -Modules ActiveDirectory
<#
.SYNOPSIS
    Odblokowuje konto AD i opcjonalnie resetuje hasło użytkownika.

.DESCRIPTION
    Sprawdza status blokady, odblokowuje konto i opcjonalnie wymusza reset hasła
    przy następnym logowaniu. Wyświetla historię złych prób logowania.

.PARAMETER Identity
    SamAccountName użytkownika.

.PARAMETER ResetPassword
    Przełącznik — jeśli podany, wymusza zmianę hasła przy następnym logowaniu.

.EXAMPLE
    .\Unlock-ADUserAccount.ps1 -Identity jkowalski
    .\Unlock-ADUserAccount.ps1 -Identity jkowalski -ResetPassword
#>

param(
    [Parameter(Mandatory)]
    [string]$Identity,

    [switch]$ResetPassword
)

Import-Module ActiveDirectory -ErrorAction Stop

$user = Get-ADUser -Identity $Identity -Properties LockedOut, BadLogonCount, BadPasswordTime, LastBadPasswordAttempt, Enabled, PasswordExpired -ErrorAction Stop

Write-Host "`nUżytkownik: $($user.DisplayName) [$($user.SamAccountName)]" -ForegroundColor Cyan
Write-Host "  Konto aktywne  : $($user.Enabled)"
Write-Host "  Zablokowane    : $($user.LockedOut)"
Write-Host "  Złe próby      : $($user.BadLogonCount)"
Write-Host "  Ostatnia zła   : $($user.LastBadPasswordAttempt)"
Write-Host "  Hasło wygasłe  : $($user.PasswordExpired)"

if (-not $user.Enabled) {
    Write-Warning "Konto jest WYŁĄCZONE — odblokowanie nie przywróci dostępu."
}

if ($user.LockedOut) {
    Unlock-ADAccount -Identity $Identity
    Write-Host "`n[OK] Konto odblokowane." -ForegroundColor Green
} else {
    Write-Host "`n[INFO] Konto nie było zablokowane." -ForegroundColor Yellow
}

if ($ResetPassword) {
    Set-ADUser -Identity $Identity -ChangePasswordAtLogon $true
    Write-Host "[OK] Ustawiono wymaganie zmiany hasła przy następnym logowaniu." -ForegroundColor Green
}

# Potwierdzenie stanu po operacji
$updated = Get-ADUser -Identity $Identity -Properties LockedOut, BadLogonCount
Write-Host "`nStan po operacji:"
Write-Host "  Zablokowane : $($updated.LockedOut)"
Write-Host "  Złe próby   : $($updated.BadLogonCount)"