2013-05-20 4 views
2

У меня есть сценарий, который я использую для создания почтовых ящиков. Я только что обнаружил, что моя обработка ошибок работает не так, как ожидалось.

Write-Host "Attempting to create mailbox." 
[void](Enable-Mailbox johndoe ` 
    -DisplayName "Doe,John" ` 
    -Alias johndoe ` 
    -RetentionPolicy 'Custom Retention Policy' ` 
    -ActiveSyncMailboxPolicy 'Default') 
if($?){ 
    Write-Host "User & mailbox created"; Write-Host} 
else{ 
    Write-Host "Error creating user/mailbox" -ForegroundColor Red -BackgroundColor Yellow 
    exit} 
Add-MailboxPermission -Identity johndoe -User 'DOMAIN\ExchangeFullAdmins' -AccessRights 'FullAccess' 
if($?){ 
    Write-Host "Permissions set on mailbox"; Write-Host} 
else{ 
    Write-Host "Error setting ExchangeFullAdmins permissions on mailbox" -ForegroundColor Red -BackgroundColor Yellow 
exit} 

Если есть ошибка при создании почтового ящика в первом if($?) вычисляется как $true и второй один вычисляется как $false (так как нет почтового ящика, чтобы действовать на). Я ожидаю, что оба будут оцениваться как $false. Любые идеи, почему первый из них не срабатывает правильно?

Эти ошибки, генерируемые каждой команды:

Enable-Mailbox : Unable to generate the e-mail address. Unable to load address module 'C:\Program Files\Microsoft\Excha 
nge Server\V14\Mailbox\address\SMTP\AMD64\inproxy.dll' for address type 'SMTP'. Additional message: 'Access is denied'. 
At \\server\share\temp.ps1:2 char:22 
+ [void](Enable-Mailbox <<<< johndoe ` 
+ CategoryInfo   : NotSpecified: (0:Int32) [Enable-Mailbox], RusException 
+ FullyQualifiedErrorId : 385E7D70,Microsoft.Exchange.Management.RecipientTasks.EnableMailbox 

Add-MailboxPermission : Cannot bind argument to parameter 'Identity' because it is null. 
At \\server\share\temp.ps1:13 char:33 
+  Add-MailboxPermission -Identity <<<< johndoe -User 'DOMAIN\ExchangeFullAdmins' -AccessRights 'FullAccess' 
    + CategoryInfo   : InvalidData: (:) [Add-MailboxPermission], ParameterBindingValidationException 
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.Exchange.Management.RecipientTa 
    sks.AddMailboxPermission 

ответ

2

Я думаю, потому что тип литья успешно. Удалите [void] и повторите попытку.

Если это работает, то вы можете попробовать вместо [void] трубопровода к Out-Null и увидеть вы получите ли ошибку:

Enable-Mailbox johndoe ` -DisplayName "Doe,John" ` -Alias johndoe ` -RetentionPolicy 'Custom Retention Policy' ` -ActiveSyncMailboxPolicy 'Default' | Out-Null

+0

Это именно то, что это было. Я удалил '[void]' в какой-то момент во время поиска и устранения неполадок, но я не тестировал правильную комбинацию обстоятельств, чтобы убедиться, что это действительно проблема. Удаление этого и использование 'Out-Null' делает именно то, что я ожидаю. –

Смежные вопросы