2016-04-28 44 views
0

我已經創建了一個PowerShell腳本,它在大多數情況下都很棒。 首先,腳本創建一個用戶帳戶。緊接着(在「讀主機」之後用戶需要有一個郵箱「輸入」)之後,它創建一個郵箱。完成後,一些(離開辦公室)設置應用於郵箱。由於某種原因,它看起來像腳本太快了,很多時候它以失敗告終,說用戶找不到,它發生在郵箱創建部分之後,當我想應用一些設置時 如果我等待用戶創建和郵箱創建部件之間幾分鐘,事情的罰款。Powershell,創建用戶,想創建郵箱,但無法在AD中找到用戶

代碼

# code here that creates user account. 
# read-host "does user need to have a mailbox"? 

Enable-Mailbox -identity $sam -database $maildb 

# here I get Enable-Mailbox outputs - Name, Alias etc 

Get-Mailbox -identity $sam | Set-Mailbox -ExternalOOFOptions InternalOnly 

通常情況下,我得到的錯誤:

Error: Couldn't find object in OU

我只是希望腳本沒有我不必等待創造一切。 有沒有辦法可以做到這一點?

我從工作站運行腳本,並導入活動目錄和交換PowerShell模塊。

+0

命令你在你的腳本使用的是什麼?也許這會更好地使用'New-Mailbox' cmdlet。請參閱[這裏](https://technet.microsoft.com/en-us/library/aa997663%28v=exchg.160%29.aspx)。只需添加一些邏輯即可延遲創建用戶帳戶和郵箱的時間,直到他們在應答帳戶應該有郵箱之後。如果是,則使用「New-Mailbox」命令創建它,否則使用其他方法。 – ChadSikorra

+0

嗨ChadSikorra,感謝您的迴應! 用戶創建後,我使用: Enable-Mailbox -identity $ sam -database $ maildb 該腳本爲我提供了一些輸出,如名稱,別名等,因此郵箱已創建。 之後,下一個命令是: Get-Mailbox -identity $ sam | Set-Mailbox -ExternalOOFOptions InternalOnly 這是大多數時候我得到一個錯誤的點:錯誤:找不到OU中的對象 – Mesjoggah

+1

我認爲你最好在創建用戶和郵箱的同時使用'New-Mailbox'命令,這是它的目的。這樣你就不必擔心可能不會馬上同步的事情。只有在確定他們沒有郵箱時才使用'New-ADUser'。這樣你可以保存'New-Mailbox'的輸出並直接調用你的'Set-Mailbox'命令。 – ChadSikorra

回答

0

嘗試在出現錯誤的cmdlet之前添加Start-Sleep cmdlet。增加合理的延遲。

E.g.加15秒延時使用:

Start-Sleep -s 15 

更多細節此cmdlet這裏:Start-Sleep

,或者你可以試試下面的代碼:

do 
{ 
    Start-Sleep -s 10 
    $mailbox = Get-Mailbox -identity $sam 
} 
while($mailbox -eq $null) 

$mailbox | Set-Mailbox -ExternalOOFOptions InternalOnly