Les conditions de course dans le script de création de count avec le count de messagerie et la synchronisation Office 365 – un bon moyen en plus du timeout de résolution?

J'ai un script powershell que j'utilise pour créer de nouveaux users. Chaque année, nous ajoutons des centaines de stagiaires, de sorte que l'automation est cruciale. Quelqu'un en HR exécute le script, donc le script est censé être infaillible.

Je suis entré dans une condition de course avec deux nouvelles fonctionnalités que j'ai ajoutées, et j'aimerais le résoudre de manière plus fiable que la méthode actuelle (sumil 2 minutes), ce qui échoue de façon intermittente.

1) Activation de la licence Office 365. Je force une synchronisation d'Office 365 avec notre AD local en utilisant la command Start-OnlineCoexistenceSync avant d'essayer l'activation de la licence. Pour autant que je puisse le dire, il n'y a aucun moyen de vérifier l'état de la synchronisation. Donc je retarde 2 minutes. Dans les tests, cela a fonctionné, mais dans la production, il fonctionne de façon intermittente. Je suppose que l'expansion de l'attente résolvirait, mais 2 minutes se sentent déjà longues. Et il est évident qu'il est plus long que nécessaire, je déteste un retard inutile.

2) Envoi d'un message électronique de bienvenue. Les counts peuvent prendre une certaine quantité de time pour créer (et parfois échouer complètement), mais je ne veux pas retarder indûment le script.

Des suggestions sur la façon de résoudre?

La cmdlet Start-OnlineCoexistenceSync devrait produire un événement dans le journal des events (du server de directory) avec l'ID d'événement 4 et la source d'événement "Synchronisation d'annuaire" et dire quelque chose comme "L'export a terminé" indiquant que la synchronisation d'annuaire est terminée.

Donc, ce que vous voulez faire, c'est que votre script Powershell attend que l'événement apparaisse. De cette façon, vous n'attendez que vous le souhaitez et plus longtime. Bien sûr, vous voudrez également coder dans des conditions d'erreur comme un maximum de time que vous attendez pour cet événement jusqu'à ce que vous abandonniez, etc.