Назад | Перейти на главную страницу

Как проверить, успешно ли выполнена команда PowerShell?

Можно ли проверить, удалось ли выполнить команду PowerShell?

Пример:

Set-CASMailbox -Identity: blocks.5 -OWAMailboxPolicy "DoNotExists"

вызвала ошибку:

Outlook Web App mailbox policy "DoNotExists" wasn't found. Make sure you typed the policy name correctly.
    + CategoryInfo          : NotSpecified: (0:Int32) [Set-CASMailbox], ManagementObjectNotFoundException
    + FullyQualifiedErrorId : 9C5D12D1,Microsoft.Exchange.Management.RecipientTasks.SetCASMailbox

Я думаю, что должно быть возможно получить FullyQualifiedErrorId, поэтому я попробовал следующее:

$ test = Set-CASMailbox -Identity: blocks.5 -OWAMailboxPolicy "DoNotExists"

Но похоже, что ошибка не передается в тестовую переменную.

Итак, как здесь правильно выполнить что-то вроде:

$test = Set-CASMailbox -Identity:blocks.5 -OWAMailboxPolicy "DoNotExists"
if ($test -eq "error")
{
Write-Host "The Set-CASMailbox command failed"
}
else
{
Write-Host "The Set-CASMailbox command completed correctly"
}

Читать Set-CASMailbox ссылка:

  • OwaMailboxPolicy параметр:

В OwaMailboxPolicy Параметр указывает политику почтового ящика Outlook в Интернете для почтового ящика. Вы можете использовать любое значение, однозначно определяющее политику почтовых ящиков Outlook в Интернете. Например:

  • название
  • Отличительное имя (DN)
  • GUID

Имя Outlook по умолчанию для политики веб-почтовых ящиков - Default.

Читать about_CommonParameters (параметры, которые можно использовать с любым командлетом), применить либо ErrorVariable или ErrorAction:

ErrorVariable:

Set-CASMailbox -Identity:blocks.5 -OWAMailboxPolicy "DoNotExists" -ErrorVariable test
if ($test.Count -neq 0)      ### $test.GetType() is always ArrayList
{
    Write-Host "The Set-CASMailbox command failed: $test"
}
else
{
    Write-Host "The Set-CASMailbox command completed correctly"
}

ErrorAction и Попробуйте, поймайте, наконец (читать about_Try_Catch_Finally как использовать блоки Try, Catch и finally для обработки прекращение ошибки):

try {
    Set-CASMailbox -Identity:blocks.5 -OWAMailboxPolicy "DoNotExists"  -ErrorAction Stop
                ### set action preference to force terminating error:  ↑↑↑↑↑↑↑↑↑↑↑↑ ↑↑↑↑
    Write-Host "The Set-CASMailbox command completed correctly"
}  
catch {
    Write-Host "The Set-CASMailbox command failed: $($error[0])"  -ForegroundColor Red
}

В любом случае читайте Write-Host считается вредоносным.

В дополнение к ответу JosefZ автоматическая переменная $Error содержит массив ошибок, поэтому вы можете посмотреть свойство $ Error.Count, чтобы узнать, увеличилось ли оно. думаю -ErrorVariable хотя это лучший ответ. видеть Get-Help about_AutomaticVariables для подробностей.