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