我有一个用于创建新用户的 powershell 脚本。我们每年都会增加数百名实习生,因此自动化至关重要。人力资源部门的某个人会运行这个脚本,因此这个脚本应该是万无一失的。
我在添加两个新功能时遇到了竞争条件,我想以一种比当前方法(睡眠 2 分钟)更可靠的方式解决它,但当前方法仍然会间歇性失败。
1) Office 365 许可证激活。在尝试激活许可证之前,我使用命令强制将 Office 365 与我们的本地 AD 同步Start-OnlineCoexistenceSync
。据我所知,没有办法检查同步的状态。所以我延迟了 2 分钟。在测试中,这种方法有效,但在生产中,这种方法时好时坏。我认为延长等待时间可以解决问题,但 2 分钟已经感觉很长了。显然,有时它比需要的时间更长,我讨厌不必要的延迟。
2) 发送欢迎电子邮件。创建帐户可能需要花费不同的时间(有时甚至会完全失败),但我不想过度拖延脚本。
关于如何解决有什么建议吗?
答案1
该Start-OnlineCoexistenceSync
cmdlet 应在事件日志(目录服务器)中生成一个事件,事件 ID 为 4,事件源为“目录同步”,并显示“导出已完成”之类的内容,表明目录同步已完成。
因此,您要做的就是让 Powershell 脚本等待该事件弹出。这样,您只需等待所需的时间,而不会等待太久。当然,您还需要在错误条件下进行编码,例如,在放弃之前等待该事件的最长时间等。