Thursday, January 12, 2012

Office 365: Hoe forceer ik een directory synchronisatie?

Wanneer je de Microsoft Online Services Directory Synchronization tool gebruikt om je Active Directory objecten naar Office 365 te synchroniseren, dan vind er iedere drie uur een synchronisatie plaats. In sommige gevallen duurt dit te lang en zou je een wijziging het liefst direct gesynchroniseerd zien worden. Gelukkig kan dit vrij eenvoudig, in dit artikel laat ik zien hoe.

Synchronisatie starten

Het direct starten van de synchronisatie doen we op de server waar de tool geïnstalleerd is.

  • Navigeer naar %programfiles%\Microsoft Online Directory Sync
  • Dubbelklik op DirSyncConfigShell.psc1
  • Gebruik het cmdlet Start-OnlineCoexistenceSync zonder parameters om de synchronisatie direct te starten

image

Synchronisatie automatiseren

Maar kan ik dit nu ook automatiseren? Natuurlijk kan dat, het is immers PowerShell. Eerst moeten we PowerShell vertellen dat het lokaal gemaakte scripts mag uitvoeren:

PowerShell.exe Set-ExecutionPolicy RemoteSigned

Vervolgens zetten we de opdrachtregels in een tekstbestand en slaan we deze op met de .ps1 extensie. De inhoud van het script zou er bijvoorbeeld zo uit kunnen zien:

Import-Console %programfiles%\Microsoft Online Directory Sync\DirSyncConfigShell.psc1
Start-OnlineCoexistenceSync

Als je dit script nu met de Task Scheduler wilt laten opstarten moeten we nog een batch-file maken welke PowerShell het door ons gemaakte script laat uitvoeren. Dat doen we als volgt:

PowerShell.exe -Command "& 'mijnscript.ps1' "

Dit kunnen we opslaan als .bat of .cmd bestand en door de Task Scheduler laten uitvoeren.

Synchronisatie monitoren

Zoals blijkt uit bovenstaand screenshot geeft de PowerShell console geen feedback, anders dan een lege regel. Net als bij Unix en andere shell-omgevingen gebruikelijk is geldt ook hier: geen bericht, goed bericht. Met andere woorden, als er geen waarschuwing of foutmelding verschijnt mogen we aannemen dat er geen probleem opgetreden is bij het uitvoeren van het commando.

Maar hoe kunnen we nu zien hoe de daadwerkelijke synchronisatie verloopt? Die terugkoppeling vinden we in het Application Log van de server. Hier zien we een heel aantal events met als source Directory Synchronization. Het event met Event ID 4 vertelt ons bijvoorbeeld dat de synchronisatie klaar is:

image

Conclusie

In dit artikel heb ik laten zien hoe we de directory synchronisatie buiten de normale cyclus om kunnen starten en ook hoe we dit proces kunnen automatiseren. Het monitoren van de daadwerkelijke synchronisatie doen we in het Application Log.