Ini kode saya saat ini:
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 <[email protected]>" -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`[email protected]" -SmtpServer exchange@xyz.com
Kode ini berfungsi dengan sempurna sekitar separuh waktu, tetapi separuh lainnya saya mendapatkan kesalahan ini sebagai balasan:
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 [email protected] 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
Jadi kalau ada yang bisa membantu saya melempar semacam perintah tunggu setelah kotak surat dibuat dan tunggu sampai kotak pesan pengguna dibuat sebelum skrip menonaktifkan ActiveSync, dll. Itu akan sangat membantu. Saya percaya bahwa hanya menggunakan saklar tunggu tidak bekerja.
email
exchange
exchange-2007
powershell
scripting
Paul Masek
sumber
sumber
while ( res-not-exist ) { Start-Sleep -s 1}
Dengan cara ini, Anda menghentikan skrip hanya selama diperlukan dan hanya jika diperlukan.Saya harus berurusan dengan beberapa waktu dalam skrip Exchange yang saya tulis beberapa waktu lalu. Secara khusus, saya perlu memodifikasi izin pada grup distribusi yang baru dibuat, tetapi perlu menunggu sampai grup distribusi benar-benar dibuat sebelum mencoba untuk memodifikasinya.
Itu hanya mencoba untuk mendapatkan atribut "IsValid" dari kotak surat (dalam contoh ini) sebagai proxy untuk "kotak surat ada". Setelah
get-mailboxpermission
mengembalikan true, langkah berikutnya, mengatur izin sebenarnya akan berfungsi. Thewrite-host
hanya untuk memberikan progress bar.sumber
Anda bisa menjalankannya sebagai pekerjaan latar belakang dan kemudian menunggu pekerjaan itu selesai. Seperti ini:
sumber
Start-Sleep = tunggu x detik
http://technet.microsoft.com/en-us/library/ee177002.aspx
sumber
Mengapa bukan sesuatu seperti:
Saya menggunakan jenis perintah ini dengan tambahan
start-sleep
setelah tes awal karena lakukan sampai makan banyak siklus prosesor tanpa itu. Jadi milikku lebih seperti ini:Jika tes akan berubah keadaan dengan cepat saat tidak khawatir tentang
start-sleep
.sumber