Можно ли проверить, выполнена ли команда 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 в политике веб-почтовых ящиков - По умолчанию.
Set-CASMailbox
). Прочтите 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
}
В любом В этом случае прочтите Запись на хост считается вредоносным .
В дополнение к ответу JosefZ автоматическая переменная $Error
содержит массив ошибок, так что вы можете посмотреть свойство $Error.Count, чтобы увидеть, увеличилось ли оно. Я думаю, что -ErrorVariable
— лучший ответ. подробности см. в Get-Help about_AutomaticVariables
.