Public/Invoke-ADAzureSync.ps1

function Invoke-ADAzureSync {
    [CmdletBinding(SupportsShouldProcess)]
    Param (
    [string]$ComputerName=$AzureSyncServer,
    [int]$MaxTrys=42
    )

    $Count = 0
    $CommandArgs = @{
    ComputerName = $ComputerName
    ScriptBlock  = {Start-ADSyncSyncCycle -PolicyType Delta}
    ErrorAction  = "SilentlyContinue"
    }

    Write-Host "Running Azure AD Sync on $ComputerName..."

    do {
    $Count++
    $Azure = Invoke-Command @CommandArgs
    if ($Azure.Result -eq "Success") {
        Write-Output "Azure AD Sync on $ComputerName completed successfully."
        return
    } else {
        Write-Warning "Azure AD Sync on $ComputerName Failed. Trying again in 10 seconds..."
        Write-SleepProgress 10 "Azure Sync"
    }
    } until ($Azure.Result -eq "Success" -Or $Count -gt $MaxTrys)

    Write-Warning "Reached $MaxTrys attempts. Aborting."
}