2016-12-15 7 views
0

Я довольно новичок в powershell (опыт 2 месяца), и я создаю свои собственные скрипты для автоматизации некоторых задач.Office 365 Online Sync, не может найти пользователя

Теперь я работаю над скриптом usercreation. Все работает нормально, пока я не прибуду в офис 365.

<Creating AD user based on template and filled info> 
<Creating Exchange emailbox> 
... 
#Retrieving email to specify user 
$email = (Get-ADUser $initials -Properties mail).mail 

#Remoting into server that has Azure AD Sync installed and forcing sync 
Invoke-Command -ComputerName <servername> -ScriptBlock {Start-ADSyncSyncCycle -PolicyType Delta} -Credential $AdminCredentials 

#Waiting until sync is done, 30 seconds for testing purposes, can be lowered after some testing 
Write-host "Waiting untill sync is done" 
Start-Sleep -s 30 

#Connecting to office365 
Connect-MsolService -Credential $OfficeCredentials 

#Creating Licence withouth exchange 
$NoExchange = New-MsolLicenseOptions -AccountSkuId syndication-account:O365_BUSINESS_PREMIUM -DisabledPlans "EXCHANGE_S_STANDARD" 

#applying licence to user 
Set-MsolUserLicense -UserPrincipalName $email -LicenseOptions $NoExchange 

Теперь эта последняя часть, где я получаю следующее сообщение об ошибке:

Set-MsolUserLicense : User Not Found. User: . 
At <path>\UserCreation.ps1:145 char:1 
+ Set-MsolUserLicense -UserPrincipalName $email -LicenseOptions $NoExchange 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : OperationStopped: (:) [Set-MsolUserLicense], MicrosoftOnlineException 
    + FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.UserNotFoundException,Microsoft.Online.Administration.Automation.SetUserLicense 

Значения пользователя не существует в Office 365 даже Тхо я вынудила синхронизируюсь и издала ожидание 30секунд (только, чтобы быть уверен, что его синхронизируются)

Если я пытаюсь найти пользователя после того, как скрипт возвращает эту ошибку, я могу найти его ...

Get-MsolUser -UserPrincipalName $email 

Я попытался увеличить время ожидания до 60 с, но это, похоже, не делает никакого различия. Должен ли я «перезапустить» сценарий или что-то, чтобы найти пользователя, или есть ли другой способ, которым я могу это сделать?

Спасибо заранее!

ответ

1

Нет, вы не должны перезапустить скрипт или сделать что-нибудь фантазии вообще, только увеличивают интервал Sleep или проверить, если Start-ADSyncSyncCycle имеет параметр -Wait (который он не должен) или попробовать писать что-то вроде:

While ((Get-ADSyncConnectorRunStatus).Runstate -eq "Busy") { 
    Start-Sleep 10 
} 
+0

Итак, тот факт, что, когда мой сценарий дал эту ошибку, я пошел и посмотрел, и пользователь был доступен в офисе365, было чистое совпадение? (произошло 3 раза на данный момент) – FroggyFreshh

+0

Итак, после того, как вы его найдете, что произойдет, если вы снова запустите команду? это работает? вы пробовали настроить 'sleep' на 2-3-5 минут и посмотреть, как это происходит? – 4c74356b41

+0

При попытке этого я только что узнал об ошибке в моем лицензировании, я сначала попытаюсь исправить это и вернусь к этой проблеме :) – FroggyFreshh