Я очень люблю использовать try..catch
операторы в скриптах Powershell (особенно при вызове внешних программ / COM-объектов и т. Д.), А затем использовать автоматическую переменную $error
для обработки ошибок.
Myпроблема в том, что я обнаружил, что при инкапсуляции таких методов в модулях переменная $error
больше не работает.Я предполагаю, что это как-то связано с тем, какой вызов вы на самом деле запускаете при вызове функции из модуля, но это все равно приводит в бешенство.Кто-нибудь здесь знает, почему или даже лучше: есть решение?
У меня есть обходной путь: использование Invoke-Expression
с параметром -errorVariable
для выполнения любых внешних вызовов, но это довольно сложно - и невсегда дурак.