Start-DirSync.ps1
function Start-DirSync { <# .SYNOPSIS Kicks off AD Connect Sync Cycle .DESCRIPTION Kicks off AD Connect Sync Cycle of specified type on specified server. .EXAMPLE Start-DirSync -SyncType Initial Starts Initial (Full) DirSync on AD Sync Server scrp-nettools01 (Default Value) .EXAMPLE Start-DirSync -SyncType Delta -ADSyncServer scrp-dirsync01 -Debug Starts Delta DirSync on AD Sync Server scrp-dirsync01 with debugging options (Writes output of current steps.) #> [CmdletBinding()] param ( # Define type of sync to start [Parameter(Mandatory = $true, Position = 0)] [ValidateSet('Delta','Initial')] [string] $SyncType, # Define AD Connect Server [Parameter(Mandatory = $true, Position = 1)] [System.String] $ADSyncServer ) if ($SyncType -eq 'Delta') { $sb = { Start-ADSyncSyncCycle -PolicyType Initial } } if ($SyncType -eq 'Initial') { $sb = { Start-ADSyncSyncCycle -PolicyType Delta } } Write-Progress -Activity 'Invoking a DirSync Cycle' -Status "Connecting to AD Sync Server $($ADSyncServer)" -PercentComplete 10 if ($Debug) { Write-Host -ForegroundColor Yellow -BackgroundColor Black -Object '-----------------------------------------------------' Write-Host -ForegroundColor Yellow -BackgroundColor Black -Object "-----Initiating Delta AADsync on $($ADSyncServer)-----" Write-Host -ForegroundColor Yellow -BackgroundColor Black -Object '-----------------------------------------------------' } Write-Progress -Activity 'Invoking a DirSync Cycle' -Status "Creating PSSession to $($ADSyncServer)" -PercentComplete 15 $DirSyncServerSession = New-PSSession -ComputerName $ADSyncServer if ($Debug) { Write-Host -ForegroundColor Magenta -BackgroundColor Black -Object 'Session opened' } Start-Sleep -Seconds 5 Write-Progress -Activity 'Invoking a DirSync Cycle' -Status "Entering PSSession to AD Sync Server $($ADSyncServer)" -PercentComplete 20 Enter-PSSession $DirSyncServerSession Write-Progress -Activity 'Invoking a DirSync Cycle' -Status "Starting AD Sync Cyle on $($ADSyncServer)" -PercentComplete 50 if ($Debug) { Write-Host -ForegroundColor Magenta -BackgroundColor Black -Object 'Entered Session' } Start-Sleep -Seconds 5 if ($Debug) { Write-Host -ForegroundColor Magenta -BackgroundColor Black -Object 'Initiating AADsync' } Write-Progress -Activity 'Invoking a DirSync Cycle' -Status "AD Sync Cyle finished starting on $($ADSyncServer)" -PercentComplete 80 #icm -ScriptBlock {cmd /C "C:\Program Files\Microsoft Azure AD Sync\Bin\DirectorySyncClientCmd.exe" initial} -Session $nettools01session Invoke-Command -ScriptBlock $sb -Session $DirSyncServerSession if ($Debug) { Write-Host -ForegroundColor Magenta -BackgroundColor Black -Object 'AADsync Completed' Write-Host -ForegroundColor Magenta -BackgroundColor Black -Object 'Exiting PSSession' } Exit-PSSession Start-Sleep -Seconds 5 Remove-PSSession -Session $DirSyncServerSession -Verbose Write-Progress -Activity 'Invoking a DirSync Cycle' -Status "Exited & Closed PSSession on $($ADSyncServer)" -PercentComplete 100 if ($Debug) { Write-Host -ForegroundColor Magenta -BackgroundColor Black -Object 'Session Removed' Write-Host Run the following command to check status of the latest 20 messages associated with Azure AD Connect. -ForegroundColor Magenta -BackgroundColor Black } Write-Output -Object "Get-EventLog -ComputerName $($ADSyncServer) -LogName Application -Source `"Directory Synchronization`" -Newest 20 | select TimeGenerated,EntryType,Message" } |