如何防止打印ManagementObjectNotFoundException

时间:2014-10-14 13:56:10

标签: powershell error-handling try-catch

我试图测试一个为现有用户创建交换邮箱的脚本。最后,我想要一个小块来测试并告知用户它是否成功。我的内容如下。

$mail = Get-Mailbox user@domain.com

$checkmail = @($mail).count

if($checkmail -eq 0)
{
write-host "Does not exist"
}
else
{
write-host "exists"
}

这实际上工作正常,但是当对象不存在时,它也会发出一个巨大的Powershell错误来启动。我只是不希望那部分在那里。我已经在整个事情上尝试过try / catch块,并且由于某种原因它只是忽略了它。错误如下:

Get-Mailbox : The operation could not be performed because object 'user@domain.com' could not
be found on the domain controller 'domainnamehere'
+ $mail = Get-Mailbox user@domain.com
+          ~~~~~~~~~~~~~~~~~~
    + CategoryInfo            : InvalidData: (:) [Get-Mailbox], ManagementObjectNotFoundException
    + FullyQualifiedErrorID   : 3AAE54AC,Microsoft.Exchange.Management.RecipientTasks.Getmailbox

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以做的一件事是为-ErrorAction

设置Get-Mailbox
$mailbox = Get-Mailbox asdf@ba.net -ErrorAction SilentlyContinue

该命令的错误将从控制台中消除(但仍会发生)。如果$mailbox为空,则需要检查If的值,并使用简单的If($mailbox){ Write-Host "Good mailbox" } Else { Write-Host "Bad mailbox" }

-ErrorAction Stop

如果错误是非终止的,则try块可能无效。如果你有一个尝试阻止设置{{1}}可能也是如此。