none
Как передать типичную ошибку в переменную RRS feed

  • Вопрос

  • Доброго дня. Как передать ошибку в переменную enable mailbox UserXX для пользователя,  которого не существует. То есть красную ругань мне надо как то загнать в переменную, что бы я её мог потом использовать. Может try ... catch как-то ? провозился два часа не получилось.
    • Изменено ole-van-de 20 марта 2020 г. 6:21
    20 марта 2020 г. 6:21

Ответы

  • $ErrorActionPreference = "stop" # Без этого вы не попадете в catch try{ throw "Красная ругань" } catch { $var = $_ } Write-Host "Что-то пошло не так: $var" -ForegroundColor Magenta $ErrorActionPreference = "continue" # это нужно чтоб скрипт отобразил ошибку и пошел дальше

    throw "другая красная ругань" $var = $Error[0] # $Error - это массив всех ошибок в скрипте, который в 0 позиции содержит последнюю ошибку, в 1 позиции - предпоследнюю, итд

    первый вариант более правильный, так как вы наверняка знаете в каком моменте скрипт зафейлил, в отличии от второго варианта где ошибка может быть отображена из не релевантного фрагмента

    а еще есть возможность перенаправлять ошибки в stdout (success stream)

    работает как то так:

    $ErrorActionPreferrence = "continue"
    $var = Some-FailedCommand 2>&1
    но не уверен что это взлетит если команда зафейлит сама по себе, а не вернет ошибку. Нужно тестить...


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа ole-van-de 20 марта 2020 г. 7:30
    • Изменено Vector BCOModerator 20 марта 2020 г. 13:31
    20 марта 2020 г. 6:41
    Модератор

Все ответы

  • Есть встроенная $Error
    20 марта 2020 г. 6:34
  • $ErrorActionPreference = "stop" # Без этого вы не попадете в catch try{ throw "Красная ругань" } catch { $var = $_ } Write-Host "Что-то пошло не так: $var" -ForegroundColor Magenta $ErrorActionPreference = "continue" # это нужно чтоб скрипт отобразил ошибку и пошел дальше

    throw "другая красная ругань" $var = $Error[0] # $Error - это массив всех ошибок в скрипте, который в 0 позиции содержит последнюю ошибку, в 1 позиции - предпоследнюю, итд

    первый вариант более правильный, так как вы наверняка знаете в каком моменте скрипт зафейлил, в отличии от второго варианта где ошибка может быть отображена из не релевантного фрагмента

    а еще есть возможность перенаправлять ошибки в stdout (success stream)

    работает как то так:

    $ErrorActionPreferrence = "continue"
    $var = Some-FailedCommand 2>&1
    но не уверен что это взлетит если команда зафейлит сама по себе, а не вернет ошибку. Нужно тестить...


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа ole-van-de 20 марта 2020 г. 7:30
    • Изменено Vector BCOModerator 20 марта 2020 г. 13:31
    20 марта 2020 г. 6:41
    Модератор
  • Великолепно. Спасибо!
    20 марта 2020 г. 7:30