使用电子邮件帐户和Office 365同步的帐户创build脚本中的竞争条件 – 除了时间延迟解决之外的任何好方法?

我有一个PowerShell脚本,我用来创build新的用户。 每年我们增加数百名实习生,所以自动化是至关重要的。 有人在HR运行脚本,所以脚本应该是万无一失的。

我遇到了两个添加了新function的竞争条件,我想用比当前方法(睡眠2分钟)更可靠的方式来解决这个问题,但这个方法仍然会间歇性地失败。

1)Office 365许可证激活。 在尝试激活许可证之前,我使用Start-OnlineCoexistenceSync命令强制Office 365与我们的本地AD同步。 据我所知,没有办法检查同步的状态。 所以我延迟2分钟。 在testing中,它已经工作,但在生产中间歇性地工作。 我认为扩大等待会解决,但2分钟已经感觉很长。 显然有时比需要的时间更长,我讨厌有不必要的延误。

2)发送欢迎电子邮件。 帐户可能需要花费不同的时间来创build(有时会完全失败),但我不想过度延迟脚本。

任何build议如何解决?

Start-OnlineCoexistenceSync cmdlet应在事件日志(目录服务器)中生成一个事件,事件ID为4,事件源为“目录同步”,并说明“导出已完成”,表示目录同步已完成。

所以你想要做的是让你的Powershell脚本等待这个事件popup。 这样你只要等待,只要你需要,不再。 当然,你也希望在错误情况下编码,比如你等待这个事件的最大时间,直到你放弃,等等。