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