Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 1. Récupérer tous les contrôleurs de domaine
- $DCs = Get-ADDomainController -Filter *
- $LookbackHours = 24 # On regarde les dernières 24h
- $Results = ForEach ($DC in $DCs) {
- Write-Host "Interrogation de $($DC.HostName)..." -ForegroundColor Cyan
- try {
- # Filtre optimisé
- $FilterHash = @{
- LogName = 'Security'
- Id = 4740
- StartTime = (Get-Date).AddHours(-$LookbackHours)
- }
- $Events = Get-WinEvent -ComputerName $DC.HostName -FilterHashtable $FilterHash -ErrorAction Stop
- ForEach ($Event in $Events) {
- # Extraction par index des propriétés (plus fiable que le nom XML parfois capricieux)
- # Index 0: Utilisateur verrouillé / Index 1: Machine source
- $Properties = $Event.Properties
- [PSCustomObject]@{
- Date = $Event.TimeCreated
- Utilisateur = $Properties[0].Value
- SourceMachine = $Properties[1].Value
- DC_Emetteur = $DC.HostName
- }
- }
- } catch {
- # Si aucun événement n'est trouvé, Get-WinEvent génère une erreur, on la gère ici
- if ($_.Exception.Message -like "*No events were found*") {
- Write-Host " -> Aucun verrouillage sur ce DC." -ForegroundColor Gray
- } else {
- Write-Warning "Erreur sur $($DC.HostName) : $($_.Exception.Message)"
- }
- }
- }
- # 4. Affichage final
- if ($Results) {
- $Results | Sort-Object Date -Descending | Out-GridView -Title "Détails des verrouillages AD"
- } else {
- Write-Host "Aucun événement trouvé dans les dernières $LookbackHours heures." -ForegroundColor Yellow
- }
Advertisement
Add Comment
Please, Sign In to add comment