#Requires -Modules ADSync <# .SYNOPSIS Sprawdza status synchronizacji Azure AD Connect — ostatni cykl, błędy, połączenia. .DESCRIPTION Wyświetla kompletny obraz stanu ADConnect: - Status ostatniej synchronizacji (delta i full) - Błędy synchronizacji - Status connectorów (AD i AAD) - Obiekty w kolejce/oczekujące - Scheduler settings Uruchom lokalnie na serwerze ADConnect lub zdalnie przez: Invoke-Command -ComputerName ADConnectServer -ScriptBlock { ... } .EXAMPLE .\Get-ADConnectSyncStatus.ps1 #> Import-Module ADSync -ErrorAction Stop Write-Host "`n========================================" -ForegroundColor Cyan Write-Host " AZURE AD CONNECT — STATUS" -ForegroundColor Cyan Write-Host " $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan # --- Scheduler --- $sched = Get-ADSyncScheduler Write-Host "--- SCHEDULER ---" -ForegroundColor Yellow [PSCustomObject]@{ 'Sync aktywny' = $sched.SyncCycleEnabled 'Staging Mode' = $sched.StagingModeEnabled 'Interwał delta (min)' = [math]::Round($sched.CustomizedSyncCycleInterval.TotalMinutes) 'Następna zaplanowana sync' = $sched.NextSyncCyclePolicyType 'Allowed sync policy' = $sched.AllowedSyncPolicyType } | Format-List # --- Ostatnia synchronizacja --- $lastSync = Get-ADSyncRunProfileResult -NumberRequested 10 Write-Host "--- OSTATNIE URUCHOMIENIA ---" -ForegroundColor Yellow $lastSync | Select-Object -First 10 | Select-Object ConnectorName, RunProfileName, @{N='Start'; E={ $_.StartDate.ToString("yyyy-MM-dd HH:mm:ss") }}, @{N='Koniec'; E={ $_.EndDate?.ToString("HH:mm:ss") }}, @{N='Czas(s)'; E={ [math]::Round(($_.EndDate - $_.StartDate).TotalSeconds) }}, Result | Format-Table -AutoSize # --- Błędy synchronizacji --- Write-Host "--- BŁĘDY SYNCHRONIZACJI ---" -ForegroundColor Yellow $errors = Get-ADSyncRunProfileResult -NumberRequested 1 | Where-Object { $_.Result -ne "success" -and $_.Result -ne "stopped-server-shutdown" } if ($errors) { Write-Host "UWAGA: Wykryto błędy synchronizacji!" -ForegroundColor Red $errors | Format-Table ConnectorName, RunProfileName, Result, StartDate -AutoSize } else { Write-Host " Brak błędów w ostatnich uruchomieniach." -ForegroundColor Green } # --- Connectors --- Write-Host "`n--- CONNEKTORY ---" -ForegroundColor Yellow Get-ADSyncConnector | Select-Object Name, Type, State, @{N='ObiektówCS'; E={ (Get-ADSyncConnectorStatistics -ConnectorName $_.Name).ConnectorSpaceObjects }} | Format-Table -AutoSize # --- Obiekty oczekujące na sync --- Write-Host "--- OBIEKTY OCZEKUJĄCE (Pending Export) ---" -ForegroundColor Yellow Get-ADSyncConnector | ForEach-Object { $stats = Get-ADSyncConnectorStatistics -ConnectorName $_.Name [PSCustomObject]@{ Konektor = $_.Name 'Pending Add' = $stats.PendingExportAdd 'Pending Update' = $stats.PendingExportUpdate 'Pending Delete' = $stats.PendingExportDelete } } | Format-Table -AutoSize Write-Host "========================================`n" -ForegroundColor Cyan