Вот мой текущий код:
Write-output “ENTER THE FOLLOWING DETAILS - When Creating Multiple New Accounts Go to EMC hit F5(refresh) and make sure previous new account is listed before proceeding to the next one”
$DName = Read-Host “User Diplay Name(New User)"
$RUser = Read-Host "Replicate User(Database Grab)"
$RData = ((Get-Mailbox -Identity $RUser).Database).DistinguishedName
$REmailInput = Read-Host “Requester's Name(Notification Email goes to this Person)"
$REmail = ((Get-Mailbox -Identity "$REmailInput").PrimarySmtpAddress).ToString()
Enable-Mailbox -Identity "$DName" -Database "$RData"
Set-CASMailbox -Identity "$DName" -ActiveSyncEnabled $false -ImapEnabled $false - PopEnabled $false
Send-MailMessage -From "John Doe <John.Doe@xyz.com>" -To $REmail -Subject "$DName's email account" -Body "$DName's email account has been setup.`n`n`nJohn Doe`nXYZ`nSystems Administrator`nOffice: 123.456.7890`nJohn.Doe@xyz.com" -SmtpServer exchange@xyz.com
Этот код работает без проблем примерно половину времени, но другую половину я получаю эту ошибку в ответ:
ENTER THE FOLLOWING DETAILS - When Creating Multiple New Accounts Go to EMC hit
F5(refresh) and make sure previous new account is listed before proceeding to
the next one
User Diplay Name(New User): Jane Doe
Replicate User(Database Grab): Julie Doe
Requester's Name(Notification Email goes to this Person): Joanna Doe
Name Alias ServerName ProhibitSendQuo
ta
---- ----- ---------- ---------------
Jane Doe JDDAFA exchange@xyz.com unlimited
Set-CASMailbox : Jane Doe is not a mailbox user.
At C:\emailclientbasic.ps1:11 char:15
+ Set-CASMailbox <<<< -Identity "$DName" -ActiveSyncEnabled $false -ImapEnable
d $false -PopEnabled $false
+ CategoryInfo : NotSpecified: (0:Int32) [Set-CASMailbox], Manage
mentObjectNotFoundException
+ FullyQualifiedErrorId : 292DF1AC,Microsoft.Exchange.Management.Recipient
Tasks.SetCASMailbox
Поэтому, если кто-нибудь может помочь мне добавить какую-нибудь команду ожидания после создания почтового ящика и дождаться создания почтового ящика пользователя, прежде чем сценарий отключит ActiveSync и т. Д., Это было бы очень полезно. Я считаю, что просто использование ключа -wait не работает.
email
exchange
exchange-2007
powershell
scripting
Пол Масек
источник
источник
while ( res-not-exist ) { Start-Sleep -s 1}
таким образом вы останавливаете скрипт только на столько времени, сколько необходимо и только если это необходимо.Мне пришлось иметь дело с определенным временем в сценарии Exchange, который я написал некоторое время назад. В частности, мне нужно было изменить разрешения для вновь созданной группы рассылки, но нужно было подождать, пока группа рассылки фактически не будет создана, прежде чем пытаться изменить ее.
Он просто пытается получить атрибут «IsValid» из почтового ящика (в этом примере) в качестве прокси для «почтового ящика существует». Как только
get-mailboxpermission
вернется true, следующим шагом будет установка разрешения. Этоwrite-host
просто для того, чтобы обеспечить индикатор выполнения.источник
Вы можете запустить его как фоновое задание, а затем дождаться его завершения. Так:
источник
Start-Sleep = подождите х секунд
http://technet.microsoft.com/en-us/library/ee177002.aspx
источник
Почему не что-то вроде:
Я использую этот тип команды с дополнительным
start-sleep
после начального теста, потому что до тех пор, пока не съест много циклов процессора без него. Так что мой выглядит больше так:Если тест собирается быстро изменить состояние, когда не беспокойтесь о
start-sleep
.источник