Связаться по:
[email protected]

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Обработка ошибок в PowerShell

Rate this post

PowerShell предусматривает средства обработки ошибок, возникающих в ходе работы сце­нария, что позволяет устранить неполадки и выпол­нить необходимую работу.

Инструкция Trap для обработки ошибок

Инструкция Trap для обработки ошибок появилась еще в PowerShell 1.0, но я ее по-прежнему часто использую в сценариях. Технология PowerShell построена на базе .NET Framework, и ошибки имеют несколько уров­ней. Возвращаемое PowerShell сообщение об ошибке верхнего уровня редко помогает решить проблему. Для примера рассмотрим случай использования мето­да SMO CheckTablesCFAST’), по сути выполняюще­го инструкцию DBCC CHECKDB (NAdventureWorks’, REPAIRFAST). При вызове этого метода без блока обработки ошибок возвращается сообщение:

Очевидно, что такое сообщение не несет никакой полезной информации, поэтому я часто использую функцию Trap:

Это позволяет при вызове метода CheckTables (‘FAST’) получить сообщение, подобное

Это сообщение содержит гораздо больше полезной информации и позволяет точно выяснить, в чем состо­ит проблема и как ее решить. Ключевое слово break после точки с запятой в инструкции trap инициирует прекращение сценария после обнаружения и обра­ботки ошибки. Ключевое слово continue позволяет продолжить выполнение сценария после обработки ошибок без прерывания.

Метод обработки ошибок Try-Catch-Finally

В PowerShell 2.0 был впервые реализован метод обработки ошибок Try-Catch-Finally, ставший привычным для большинства .NET-разработчиков. Этот метод

ботке возможных проблем. Дополнительным преимуществом метода является возможность указывать различные типы обработки ошибок для разных ошибок. В приведенном в листинге примере также демонстрируется запуск метода CheckTables. Однако в данном случае каждый объект ItemNotFoundException обрабатывается отдельно, после чего обрабатываются все оставшиеся ошибки способом, аналогичным показанному в инструкции trap.
Очевидно, что такой вариант позволяет обрабатывать различные ошибки, а тот факт, что блоки Try-Catch-Finally могут быть вложенными, обеспечивает широкие возможности управления сценариями.

Пример запуска метода CheckTables

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.