Поиск по сайту:

Как отлаживать скрипт PowerShell


Любая разработка скрипта обычно требует устранения неполадок, что обычно приводит к одному из двух подходов. Либо вручную задайте значения переменных и выведите эти данные при запуске скрипта, либо используйте отладку, чтобы установить точки останова для проверки данных перед продолжением или прерыванием. В PowerShell ISE и Visual Studio Code встроена возможность выполнения отладки.

Как работает отладка PowerShell?

PowerShell ISE, входящая в состав Windows PowerShell, была традиционной средой для отладки сценариев PowerShell. Благодаря встроенному меню отладки и графическому представлению точек останова начать работу очень просто. Во-первых, любой скрипт, который вы отлаживаете, должен быть сохранен. Далее вам нужно будет установить точки останова одним из трех способов.

  • В выделенной строке используйте клавишу F9, чтобы установить точку останова.
  • Нажмите правой кнопкой мыши рядом со строкой и выберите Переключить точку останова, чтобы установить точку останова.
  • Используйте Set-PSBreakPoint, указав строку, переменную, функцию или соответствующий текст.

После того, как вы установили точку останова, вы можете просто начать отладку, запустив скрипт с помощью F5 или Отладка → Выполнить/Продолжить. Как только сценарий достигнет указанной точки останова, выполнение будет приостановлено, и вам нужно будет выполнить одно из следующих действий.

  • Шаг вперед — выполнение только текущего оператора с остановкой перед следующим оператором. Если текущий оператор является функцией или скриптом, перед остановкой выполните весь вызов.
  • Шаг с заходом. Аналогично шагу с обходом, выполняется только текущий оператор, останавливаясь перед следующим оператором. Вместо выполнения всей функции или скрипта, если они вызываются, переходите к вызову.
  • Шаг за пределы — если внутри функции, шаг за пределы и вверх на один уровень, если функция вложена. Если в основном скрипте выполняется до конца скрипта или до следующей точки останова, в зависимости от того, что наступит раньше. Пропущенные операторы выполняются, но не выполняются.

Когда сценарий остановлен в точке останова, вы можете навести указатель мыши на переменную и посмотреть, каковы значения любой данной переменной. Кроме того, вы можете использовать командную строку для вывода переменных, а также для просмотра текущего состояния. Есть несколько предостережений по этому поводу. $_, $Input, $MyInvocation, $PSBoundParameters и $Args не будут работать, так как они являются автоматическими переменными и не подлежат отладке. Один из способов получить эти значения — присвоить их промежуточной переменной, которую затем можно установить в качестве точки останова.

Отладка PowerShell в коде Visual Studio

Очень похоже на то, как работает PowerShell ISE, Visual Studio Code добавляет несколько очень полезных параметров отладки. Кроме того, VS Code позволяет легко выполнять отладку с помощью PowerShell 7.x, в то время как ISE традиционно ограничивается только Windows PowerShell. Используя те же ключевые команды, что и в интегрированной среде сценариев PowerShell, вы можете быстро приступить к отладке. Еще лучше то, что теперь у вас есть панель отладки в VS Code, которая объединяет большую часть вывода переменных и упрощает просмотр моментального снимка всех значений переменных в вашем коде.

Использование отладки кода VS

Как и в PowerShell ISE, вы можете использовать клавишу F5 для запуска интерактивного сеанса отладки. В отличие от ISE, VS Code предлагает гораздо лучший и более полезный опыт отладки. Вы не только получаете традиционную консоль отладки, обозначенную приглашением [DBG], но и все известные переменные и их вывод в левой панели отладки. Чтобы упростить навигацию по параметрам отладки, верхняя панель отладки упрощает переход к точкам останова, выход из них и переход через них. Также не требуется сохраняться перед запуском!

Для этого требуется расширение PowerShell для VS Code.

Использование команд отладки команд

Хотя отладка строго из командной строки иногда не самая простая операция, вы можете сделать это с помощью встроенных команд отладки. Есть несколько встроенных команд, облегчающих это.

  • Set-PSBreakPoint – установка точки останова, которая срабатывает для определенной строки, команды или переменной.
  • Get-PSBreakPoint – получение определенной точки останова по идентификатору или список всех точек останова.
  • Remove-PSBreakPoint – удаление определенной точки останова.
  • Disable-PSBreakPoint – временно отключите точку останова, но не удаляйте ее.
  • Enable-PSBreakPoint – включить ранее отключенную точку останова.

Используя универсальную команду Set-PSBreakPoint, вы можете быстро установить точку останова, после нажатия которой вы попадете в командную строку отладки. В этот момент, используя стандартные комбинации клавиш, вы можете быстро проверить переменные и продолжить или прервать выполнение в этой точке.

Заключение

Отладка не должна быть сложной, и как только вы начнете с этим, используя любой из вышеперечисленных методов, вы обнаружите, что это неотъемлемая часть ваших потребностей в разработке сценариев. Узнайте, как начать отладку PowerShell уже сегодня!