#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)"