Condições de corrida no script de criação de conta com conta de e-mail e sincronização do Office 365 - alguma boa maneira além do tempo de atraso para resolver?

5

Eu tenho um script PowerShell que uso para criar novos usuários. Todos os anos adicionamos centenas de estagiários, portanto a automação é crucial. Alguém no RH executa o script, então o script deve ser infalível.

Estou correndo para uma condição de corrida com dois novos recursos que adicionei e gostaria de resolvê-lo de uma maneira mais confiável do que o método atual (sleep 2 minutes), que ainda falha intermitentemente.

1) Ativação da licença do Office 365. Eu forço uma sincronização do Office 365 com o nosso AD local usando o comando Start-OnlineCoexistenceSync antes de tentar a ativação da licença. Tanto quanto eu posso dizer, não há como verificar o status da sincronização. Então eu demoro 2 minutos. Nos testes isso funcionou, mas na produção funciona de forma intermitente. Eu suponho que expandir a espera seria resolvida, mas 2 minutos já parecem longos. E claramente, às vezes, é mais do que o necessário, eu odeio ter um atraso desnecessário.

2) Enviando uma mensagem de e-mail de boas-vindas. As contas podem levar um tempo variável para criar (e às vezes falhar completamente), mas não quero atrasar o script desnecessariamente.

Alguma sugestão sobre como resolver?

    
por Quinten 28.08.2014 / 17:39

1 resposta

3

O cmdlet Start-OnlineCoexistenceSync deve produzir um evento no log de eventos (com o ID do evento 4 e a origem de eventos "Directory Synchronization" e dizer algo como "A exportação foi concluída" que indicará que a sincronização de diretórios está completo.

Então, o que você quer fazer é fazer com que seu script do Powershell espere que o evento apareça. Dessa forma, você está apenas esperando o tempo que precisar e não mais. É claro que você também desejará codificar em condições de erro, como o tempo máximo que você esperará até que você desista, etc.

    
por 28.08.2014 / 17:51