Red de conocimiento informático - Material del sitio web - Cómo depurar scripts en Windows PowerShell ISE

Cómo depurar scripts en Windows PowerShell ISE

Describe cómo utilizar las capacidades de depuración intuitivas del entorno de scripting integrado (ISE) de Windows PowerShell® para depurar scripts en su computadora local.

Cómo gestionar puntos de interrupción Cómo gestionar una sesión de depuración Cómo entrar, entrar y salir durante la depuración Cómo mostrar el valor de una variable durante la depuración

Cómo gestionar puntos de interrupción

Un punto de interrupción es un lugar designado en un script donde desea pausar las operaciones para poder examinar el estado actual de las variables y el entorno en el que se ejecuta el script. Una vez que un punto de interrupción pausa el script, puede ejecutar comandos en el panel de la consola para verificar el estado del script. Puede generar variables o ejecutar otros comandos. Incluso puede modificar el valor de cualquier variable visible en el contexto del script en ejecución. Una vez que haya marcado lo que desea ver, puede continuar ejecutando el script.

En el entorno de depuración de Windows PowerShell, puede establecer tres tipos de puntos de interrupción:

Punto de interrupción de línea**** Cuando el script se está ejecutando, cuando se alcanza la línea especificada, el script hará una pausa

Punto de interrupción variable. El script se detendrá cada vez que cambie el valor de la variable especificada.

Punto de interrupción del comando. Mientras se ejecuta el script, éste se pausa cada vez que se va a ejecutar el comando especificado. Puede contener parámetros para filtrar aún más los puntos de interrupción solo para las acciones requeridas. El comando también puede ser una función que usted cree.

De estos, en el entorno de depuración ISE de Windows PowerShell, solo se pueden establecer puntos de interrupción de línea mediante menús o métodos abreviados de teclado. Los otros dos tipos de puntos de interrupción se pueden configurar, pero se deben configurar desde el panel de la consola mediante el cmdlet Set-PSBreakpoint [m2]. Esta sección describe cómo realizar tareas de depuración en Windows PowerShell ISE mediante menús (si están disponibles) y cómo ejecutar comandos más amplios desde el panel de la consola a través de scripts.

Configuración de puntos de interrupción

Puede establecer puntos de interrupción en una secuencia de comandos solo después de guardar la secuencia de comandos. Haga clic derecho en la línea donde desea establecer un punto de interrupción y haga clic en Alternar punto de interrupción. Alternativamente, haga clic en la línea donde desea establecer un punto de interrupción de línea y presione la tecla F9, o haga clic en Alternar punto de interrupción en el menú Depurar. ********

El siguiente script es un ejemplo de cómo utilizar el cmdlet Set-PSBreakpoint para establecer un punto de interrupción variable en el panel de la consola.

# Este comando establece un punto de interrupción en la variable Servidor en el script Sample.ps1.

set-psbreakpoint -script sample.ps1 -variable Server

Enumerar todos los puntos de interrupción

Muestra todos los puntos de interrupción en la sesión actual de Windows PowerShell®.

En el menú Depurar, haga clic en Listar puntos de interrupción. ******** El siguiente script es un ejemplo de cómo utilizar el cmdlet Get-PSBreakpoint para enumerar todos los puntos de interrupción del panel de la consola.

# Este comando enumerará todos los puntos de interrupción en la sesión actual.

get-psbreakpoint

Eliminar punto de interrupción

Eliminar un punto de interrupción eliminará el punto de interrupción. Si cree que podría necesitarlo en el futuro, considere desactivarlo. Haga clic derecho en la línea donde se encuentra el punto de interrupción que desea eliminar y luego haga clic en Alternar punto de interrupción. Alternativamente, haga clic en la línea donde desea eliminar el punto de interrupción y luego haga clic en Alternar punto de interrupción en el menú Depurar. ******** El siguiente script es un ejemplo de cómo utilizar el cmdlet Remove-PSBreakpoint para eliminar un punto de interrupción con una ID especificada del panel de la consola.

# Este comando eliminará el punto de interrupción con ID de punto de interrupción 2.

remove-psbreakpoint -id 2

Eliminar todos los puntos de interrupción

Para eliminar todos los puntos de interrupción definidos en la sesión actual, haga clic en Haga clic en "Eliminar todos los puntos de interrupción". ********

El siguiente script es un ejemplo de cómo utilizar el cmdlet Remove-PSBreakpoint para eliminar todos los puntos de interrupción del panel de la consola.

#Este comando eliminará todos los puntos de interrupción en la sesión actual.

get-breakpoint | remove-breakpoint

Deshabilitar puntos de interrupción

Deshabilitar un punto de interrupción no elimina el punto de interrupción eliminado, simplemente lo desactiva hasta que se habilita. Para deshabilitar un punto de interrupción de línea específico, haga clic derecho en la línea donde se encuentra el punto de interrupción de línea que desea deshabilitar y luego haga clic en Deshabilitar puntos de interrupción. Alternativamente, haga clic en la línea donde desea deshabilitar el punto de interrupción y presione la tecla F9, o haga clic en Deshabilitar punto de interrupción en el menú Depurar. ******** El siguiente script es un ejemplo de cómo utilizar el cmdlet Disable-PSBreakpoint para eliminar un punto de interrupción con una ID especificada del panel de la consola.

# Este comando desactiva el punto de interrupción con ID de punto de interrupción 0.

disable-psbreakpoint -id 0

Deshabilitar todos los puntos de interrupción

Deshabilitar un punto de interrupción no elimina el punto de interrupción; simplemente lo desactiva hasta que se habilita. Para deshabilitar todos los puntos de interrupción en la sesión actual, haga clic en Deshabilitar todos los puntos de interrupción en el menú Depurar. ******** El siguiente script es un ejemplo de cómo utilizar el cmdlet Disable-PSBreakpoint para desactivar todos los puntos de interrupción desde el panel de la consola.

# Este comando desactiva todos los puntos de interrupción en la sesión actual.

# Puedes abreviar este comando como "gbp | dbp".

get-psbreakpoint | enable-psbreakpoint

Habilitar puntos de interrupción

Para habilitar un punto de interrupción específico, haga clic derecho en la línea donde desea habilitar el punto de interrupción y haga clic Haga clic para habilitar los puntos de interrupción. Alternativamente, haga clic en la línea donde desea habilitar un punto de interrupción y presione la tecla F9, o haga clic en Habilitar puntos de interrupción en el menú Depurar. ******** El siguiente script es un ejemplo de cómo utilizar el cmdlet Enable-PSBreakpoint para habilitar un punto de interrupción específico desde el panel de la consola.

# Este comando habilitará puntos de interrupción con ID de punto de interrupción 0, 1 y 5.

enable-psbreakpoint -id 0, 1, 5

Habilitar todos los puntos de interrupción

Para habilitar todos los puntos de interrupción definidos en la sesión actual, vaya a " "Habilitar puntos de interrupción " en la sección ID de puntos de interrupción. Para habilitar todos los puntos de interrupción definidos en la sesión actual, haga clic en Habilitar todos los puntos de interrupción en el menú Depurar. ******** El siguiente script es un ejemplo de cómo utilizar el cmdlet Enable-PSBreakpoint para habilitar todos los puntos de interrupción desde el panel de la consola.

# Este comando habilitará todos los puntos de interrupción en la sesión actual.

# Puedes utilizar un alias para abreviar este comando: "gbp | ebp".

get-psbreakpoint | enable-psbreakpoint

Cómo administrar una sesión de depuración

Antes de comenzar a depurar, debe establecer uno o más puntos de interrupción. Los puntos de interrupción no se pueden establecer a menos que se guarde el script que desea depurar. Para obtener instrucciones sobre cómo establecer puntos de interrupción, consulte Cómo administrar puntos de interrupción o Set-PSBreakpoint. Una vez que comience a depurar, no podrá editar el script hasta que deje de depurar. Los scripts con uno o más puntos de interrupción establecidos se guardarán automáticamente antes de ejecutarse.

Iniciar la depuración

Presione F5 o haga clic en el icono Ejecutar script en la barra de herramientas, o haga clic en Ejecutar/Continuar en el menú Depurar. El script se ejecutará hasta que se encuentre el primer punto de interrupción. Se detiene aquí y resalta la línea pausada.

Continuar con la depuración

Presione F5 o haga clic en el icono Ejecutar script en la barra de herramientas, o haga clic en Ejecutar/Continuar en el menú Depurar. Esto hará que el script continúe ejecutándose hasta el siguiente punto de interrupción o hasta el final del script si no se encuentra ningún siguiente punto de interrupción.

Ver la pila de llamadas

La pila de llamadas muestra dónde se está ejecutando actualmente el script. Si el script se ejecuta dentro de una función llamada por otra función, aparecerán líneas adicionales en el resultado. La línea inferior muestra el script original y la línea del script que llama a la función. La siguiente línea muestra la función y las líneas donde pudo haber llamado a otra función. La línea superior muestra el contexto actual de la línea actual donde se establece el punto de interrupción.

Para ver la pila de llamadas actual mientras está en pausa, presione CTRL SHIFT D, o haga clic en Mostrar pila de llamadas en el menú Depurar, o escriba K en el panel de la consola y presione ENTRAR.

Detener la depuración

Detener la depuración

Detener la depuración

Detener la depuración

Detener la depuración

Detener la depuración

Detener la depuración

Presione SHIFT-F5, o haga clic en Detener depurador en el menú Depurar, o escriba Q en el panel de la consola y presione ENTER.

Cómo avanzar, entrar y salir durante la depuración

Un solo paso es el proceso de ejecutar una instrucción a la vez. Puede detenerse en una línea de código y examinar los valores de las variables y el estado del sistema. La siguiente tabla describe tareas de depuración comunes, como pasar por alto, entrar y salir.

Descripción de la tarea de depuración Cómo hacerlo en PowerShell ISE

Paso Ejecuta la instrucción actual y se detiene en la siguiente instrucción. Si la declaración actual es una llamada de función o script, el depurador ingresa a la función o secuencia de comandos o se detiene en la siguiente declaración. Presione F11, haga clic en Paso en el menú Depurar o escriba S en el panel de la consola y presione ENTRAR. ********

Step Over ejecuta la declaración actual y luego se detiene en la siguiente declaración. .Si la declaración actual es una llamada de función o script, el depurador ejecuta la función o script completo, o se detiene en la siguiente declaración después de la llamada a la función. Presione F10, o haga clic en Paso a paso en el menú de depuración, o escriba V en el panel de la consola y presione ENTRAR. ********

Step Out salta de la función actual. Si la función está anidada, regresa al nivel anterior. Si está en el cuerpo, el script se ejecutará hasta el final o hasta el siguiente punto de interrupción. Las declaraciones omitidas se ejecutarán, pero no se avanzarán. Presione MAYÚS F11, haga clic en Desglose en el menú Depurar o escriba O en el panel de la consola y presione ENTRAR.

Continuar la ejecución hasta el final o hasta el siguiente punto de interrupción. Las funciones y llamadas omitidas se ejecutarán, pero no se realizará el recorrido de un solo paso. Presione F5 o haga clic en Ejecutar\/Continuar en el menú de depuración o escriba C en el panel de la consola y presione ENTRAR.

Cómo mostrar el valor de una variable durante la depuración

Al recorrer el código, puede mostrar el valor actual de la variable en el script.

Mostrar el valor de una variable estándar

Utilice uno de los siguientes métodos:

En el panel de secuencia de comandos, coloque el cursor sobre la variable para mostrar Su valor es mostrado en .

En el panel de la consola, escriba el nombre de la variable y presione ENTER.

Todos los paneles de ISE están siempre en el mismo ámbito.

Por lo tanto, cuando depura un script, los comandos que escriba en el panel de la consola se ejecutarán en el ámbito del script. Esto le permite usar el panel de la consola para buscar valores de variables y llamar a funciones que solo están definidas en el script.

Mostrar el valor de las variables automáticas

Al depurar un script, puede utilizar el método anterior para mostrar el valor de casi cualquier variable. Sin embargo, estos métodos no funcionan con las siguientes variables automáticas.

$_

$Entrada

$MiInvocación

$PSBoundParameters

$Args

< Si intenta mostrar el valor de cualquiera de estas variables, obtendrá el valor de la variable de la canalización interna utilizada por el depurador, no el valor de la variable del script. Para algunas variables ($_, $Input, $MyInvocation, $PSBoundParameters y $Args), puede solucionar este problema al:

Asignar el valor de la variable automática a una nueva variable en el script.

Muestre el valor de la nueva variable colocándose sobre ella en el panel de script o escribiéndola en el panel de la consola.

Por ejemplo, para mostrar el valor de la variable $MyInvocation, asigne el valor a una nueva variable en el script (como $scriptname), luego coloque el mouse sobre la variable $scriptname o escriba $scriptname variable para mostrar su valor.

#En MyScript.ps1

$scriptname = $MyInvocation.MyCommand.Path

#En el panel de la consola:

C: \ps-testgt; $nombre del script

C:\ps-test\MyScript.ps1