# Clear Windows Event Logs - Run as Administrator
# Clears Application, System, Security, Setup, and other logs

if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    Write-Host "Need Administrator. Right-click -> Run as administrator." -ForegroundColor Red
    exit 1
}

$mainLogs = @('Application', 'Security', 'System', 'Setup')
$cleared = @()
$failed = @()

Write-Host "Clearing Windows Event Logs..." -ForegroundColor Cyan
Write-Host ""

foreach ($log in $mainLogs) {
    try {
        Clear-EventLog -LogName $log -ErrorAction Stop
        $cleared += $log
        Write-Host "  OK: $log" -ForegroundColor Green
    } catch {
        $failed += "$log : $($_.Exception.Message)"
        Write-Host "  FAIL: $log - $($_.Exception.Message)" -ForegroundColor Yellow
    }
}

Write-Host ""
Write-Host "Clearing other logs via wevtutil..." -ForegroundColor Cyan
$allLogs = wevtutil el 2>$null
foreach ($log in $allLogs) {
    if ($mainLogs -notcontains $log) {
        $r = wevtutil cl $log 2>&1
        if ($LASTEXITCODE -eq 0) {
            $cleared += $log
            Write-Host "  OK: $log" -ForegroundColor Green
        } else {
            $failed += "$log : $r"
        }
    }
}

Write-Host ""
Write-Host "Done. Cleared: $($cleared.Count) logs." -ForegroundColor Green
if ($failed.Count -gt 0) {
    Write-Host "Failed: $($failed.Count) logs (some may be protected)." -ForegroundColor Yellow
}
