Header Ads

Como depurar um script PowerShell

Qualquer desenvolvimento de script geralmente requer solução de problemas, o que geralmente resulta em uma de duas abordagens. Definindo manualmente as variáveis ​​para valores e gerando esses dados ao executar o script, ou utilizando a depuração para definir pontos de interrupção para inspecionar os dados antes de continuar ou abortar. Integrado ao PowerShell ISE e ao Visual Studio Code está a capacidade de realizar a depuração.

Como funciona a depuração do PowerShell?

Incluído no Windows PowerShell, o PowerShell ISE tem sido o ambiente tradicional para depurar scripts do PowerShell. Com um menu integrado para depuração e uma representação gráfica dos pontos de interrupção, é fácil começar. Primeiro, qualquer script que você esteja depurando deve ser salvo. Em seguida, você precisará definir pontos de interrupção usando uma das três maneiras.

  • Na linha em foco, use a tecla F9 para definir um ponto de interrupção.
  • Clique com o botão direito próximo a uma linha e escolha Alternar ponto de interrupção para definir um ponto de interrupção.
  • Use o Set-PSBreakPoint especificando uma linha, variável, função ou texto correspondente.

Depois de definir um ponto de interrupção, você pode simplesmente iniciar a depuração executando o script com F5 ou Depurar → Executar / Continuar. Assim que o script atingir o ponto de interrupção especificado, a execução será pausada e você precisará realizar uma das seguintes ações.

  • Passar por cima – Execute apenas a instrução atual, parando antes da próxima instrução. Se a instrução atual for uma função ou script, execute a chamada inteira antes de parar.
  • Entre em – Semelhante a Step Over, execute apenas a instrução atual, parando antes da próxima instrução. Em vez de executar toda a função ou script, se chamado, entre na chamada.
  • Etapa Out – Se estiver dentro de uma função, saia e suba um nível se a função estiver aninhada. Se o script principal for executado até o final do script ou próximo ponto de interrupção, o que ocorrer primeiro. As instruções ignoradas são executadas, mas não processadas.

Quando o script é interrompido em um ponto de interrupção, você pode passar o mouse sobre uma variável com o cursor do mouse e ver quais são os valores de qualquer variável. Além disso, você pode usar a linha de comando para variáveis ​​de saída, bem como para ver o status atual. Existem algumas advertências para isso. $ _, $ Input, $ MyInvocation, $ PSBoundParameters e $ Args não funcionarão porque são variáveis ​​automáticas e não estão sujeitas a depuração. Uma maneira de recuperar esses valores é atribuí-los a uma variável intermediária que pode então ser definida para um ponto de interrupção.

Depuração do PowerShell no código do Visual Studio

Muito semelhante a como o PowerShell ISE funciona, o Visual Studio Code adiciona várias opções de depuração muito úteis. Além disso, o VS Code permite que você depure facilmente com o PowerShell 7.x, enquanto o ISE é tradicionalmente limitado apenas ao Windows PowerShell. Usando os mesmos comandos de tecla do PowerShell ISE, você pode começar a depurar rapidamente. Melhor ainda é que agora você tem o painel de depuração dentro do VS Code, que consolida grande parte da saída da variável e torna mais fácil ver um instantâneo de todos os valores das variáveis ​​em seu código.

Usando depuração de código VS

Assim como o PowerShell ISE, você pode usar F5 para iniciar uma sessão de depuração interativa. Ao contrário do ISE, o VS Code oferece uma experiência de depuração muito melhor e mais útil. Você não apenas obtém o console de depuração tradicional, indicado pelo prompt [DBG], mas também todas as variáveis ​​conhecidas e suas saídas no painel de depuração à esquerda. Para tornar a navegação nas opções de depuração melhor, a barra de depuração superior torna a entrada, saída e sobre os pontos de interrupção muito fácil. Além disso, você não é obrigado a salvar antes de correr!

A extensão do PowerShell do código VS é necessária para que isso funcione facilmente.

Usando os comandos de depuração de comando

Embora a depuração estritamente pela linha de comando não seja a operação mais fácil de fazer às vezes, você pode fazer isso usando os comandos de depuração integrados. Existem alguns comandos integrados para facilitar isso.

  • Set-PSBreakPoint – Defina um ponto de interrupção que dispara em uma linha, comando ou variável específica.
  • Get-PSBreakPoint – Recupere um ponto de interrupção específico por ID ou liste todos os pontos de interrupção.
  • Remove-PSBreakPoint – Remova um ponto de interrupção específico.
  • Disable-PSBreakPoint – Desative temporariamente um ponto de interrupção, mas não remova.
  • Enable-PSBreakPoint – Ative um ponto de interrupção desativado anteriormente.

Usando o versátil Set-PSBreakPoint, você pode definir rapidamente um ponto de interrupção que, uma vez atingido, o levará para o prompt de comando de depuração. Nesse ponto, usando as combinações de teclas padrão, você pode inspecionar rapidamente as variáveis ​​e continuar ou interromper a execução nesse ponto.

Conclusão

A depuração não precisa ser difícil e, uma vez que você comece com isso usando qualquer um dos métodos acima, você descobrirá que é essencial para suas necessidades de desenvolvimento de script. Veja como você pode começar a usar a depuração do PowerShell hoje mesmo!

Nenhum comentário