Get-ADConnectSyncStatus — status synchronizacji ADConnect

🏢 Active Directory POWERSHELL

Kompleksowy przegląd stanu Azure AD Connect: scheduler, ostatnie uruchomienia, błędy, pending export

Pobierz .ps1

Opis

Dashboard statusu Azure AD Connect — uruchom na serwerze ADConnect lub zdalnie. Wyświetla: - Ustawienia Schedulera: interwał, staging mode, następna synchronizacja - Ostatnie 10 uruchomień z wynikami i czasem trwania - Błędy synchronizacji z ostatnich przebiegów - Lista konektorów z liczbą obiektów w Connector Space - Pending Export: liczba obiektów czekających na Add/Update/Delete Wymagania: moduł ADSync, uruchomienie na serwerze ADConnect. Zdalnie: Invoke-Command -ComputerName ADConnect01 -FilePath Get-ADConnectSyncStatus.ps1

🕒 2026-04-13 📦 Źródło: own
skrypt.ps1
#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