Depuración de scripts
Los scripts que se ejecutan en Universal lo hacen dentro de procesos en segundo plano o runspaces, lo que puede dificultar la depuración de lo que sucede dentro de un script. Puede usar cmdlets como Write-Debug y Write-Verbose para proporcionar más información en los registros de las aplicaciones y los trabajos.
Visual Studio Remote Debugger
Usando la extensión de Visual Studio Code de PowerShell Universal, puede conectarse directamente a sus scripts de PowerShell que se ejecutan en PowerShell Universal.
Depurador integrado
El depurador integrado permite acceder a una consola de depuración para los scripts en ejecución. Puede incluir la llamada al cmdlet Wait-Debugger en sus scripts y estos pasarán a un estado In Breakpoint. Una vez que esto suceda, puede ver el trabajo para ejecutar comandos contra el script.
Scripts
PowerShell Universal se integra directamente con el depurador de PowerShell. Puede incluir Wait-Debugger dentro de sus scripts para que se pausen.
Por ejemplo, suponga que tiene un script que incluye una llamada a Wait-Debugger. La primera línea se ejecutará y después se pausará una vez que llegue a la segunda línea.
$Processes = Get-Process
Wait-DebuggerUna vez que un script está pausado, verá un terminal para depurar el script.
A continuación, puede usar los comandos de depuración integrados para recorrer el script paso a paso.
Aplicaciones
Puede usar Wait-Debugger directamente en sus aplicaciones de PowerShell Universal. Puede incluir este comando en controladores de eventos y dinámicas para pausar la ejecución de la aplicación y evaluar el estado actual del script.
Por ejemplo, puede incluir Wait-Debugger en una dinámica.
El resultado es que la aplicación mostrará el esqueleto de carga porque el depurador de PowerShell está en un punto de interrupción.
Dentro de la consola de administración, puede hacer clic en la pestaña Debugger para ver los puntos de interrupción actuales en los que la aplicación está esperando. El depurador proporciona un terminal para evaluar comandos contra el runspace. Puede usar cualquier comando estándar de PowerShell. También puede usar las herramientas de depuración, como la ejecución paso a paso y el listado del código fuente. Hay botones disponibles en la parte superior de la consola.
Puede usar comandos como Get-Variable para obtener información sobre el estado de las variables. Ejecute c para permitir que el endpoint continúe su ejecución.
Registro de scripts
Ciertos aspectos de Universal registrarán sus scripts automáticamente. Otras funciones pueden requerir que usted mismo realice el registro.
APIs
Puede usar la vista Live Log en la pestaña Log para ver los registros de la API seleccionada.
Trabajos
Los trabajos registran de forma exhaustiva. Verá la salida de la consola y de la canalización. Si establece $DebugPreference o $VerbosePreference , también verá esos flujos en la salida de la consola. Puede añadir mensajes de registro adicionales usando Write-Debug o Write-Verbose .
Aplicaciones
Las aplicaciones registran mensajes informativos, de advertencia y de error en su registro. Se recomienda usar el registro al iniciar una aplicación en lugar de intentar adjuntar un depurador. También puede usar la variable $DebugPreference para obtener información adicional durante el inicio de la aplicación.
Autenticación y autorización
Puede usar la vista Live Log en las páginas de autenticación y de roles para ver la salida de los flujos de PowerShell.
Depuración de scripts desde una consola de PowerShell
Puede depurar cualquier script dentro de Universal (o cualquier proceso de PowerShell, en realidad) usando los cmdlets de depuración disponibles en PowerShell. Estos cmdlets le permiten conectarse a procesos locales de PowerShell, como Universal, y recorrer sus scripts paso a paso directamente en el terminal.
Pausar el script
Primero, tendrá que asegurarse de que el script espere a que conecte el depurador antes de continuar. Esto significa que deberá incluir un comando Wait-Debugger en algún lugar de su script.
Ejecutar su script
Ahora que tiene su script configurado para pausarse y esperar al depurador, querrá ejecutar su script. Para los trabajos, simplemente inicie el trabajo. Para las API, deberá realizar una solicitud a la API a través del endpoint que intenta probar. Para las aplicaciones, deberá cargar la página en su navegador. Para la autenticación y la autorización, deberá iniciar sesión.
Encontrar el ID de su proceso
Una vez que tenga el comando Wait-Debugger en el script que desea depurar, deberá iniciar el script y determinar el proceso dentro del cual se ejecuta.
Trabajos
Los trabajos se ejecutan en su propio proceso aislado dentro de Universal. Todo lo que tendrá que hacer es iniciar el trabajo y este iniciará el proceso y esperará en su comando Wait-Debugger. Una vez que el trabajo se haya iniciado, puede usar el cmdlet Get-UAJob para encontrar el ID de proceso de ese trabajo.
APIs
Las API se ejecutan en un único proceso de PowerShell. No inicia un nuevo proceso para cada llamada a la API. Puede localizar el proceso de la API buscando el proceso pwsh o PowerShell cuya línea de comandos incluya StartApi.
Aplicaciones
Las aplicaciones se ejecutan en su propio proceso aislado de PowerShell. El ID de proceso se muestra en la tabla de aplicaciones dentro de la consola de administración.
Autenticación y autorización
Los scripts de autenticación y autorización se ejecutan dentro del servidor de Universal. Puede encontrar el proceso Universal.Server.exe y adjuntarse a él.
Entorno integrado
Cualquier función que se ejecute dentro del entorno integrado se ejecutará dentro del proceso Universal.Server.exe. Deberá adjuntarse a este proceso para poder depurarlas.
Adjuntarse al proceso y depurar el runspace
Una vez que tenga el proceso al que desea adjuntarse, puede hacerlo usando Enter-PSHostProcess . Simplemente especifique el ID de proceso que encontró en el paso anterior.
Una vez que se haya adjuntado al proceso, ahora querrá encontrar el runspace donde se está ejecutando su código. Para ello, puede usar el cmdlet Get-Runspace. Esto devolverá una lista de los runspaces actualmente activos en su proceso. Busque el runspace marcado como InBreakpoint. Este es el runspace que está esperando en el comando Wait-Debugger.
Ahora que ha encontrado su runspace, use Debug-Runspace para adjuntarse al runspace. Ahora tendrá la oportunidad de emitir comandos de depuración contra ese runspace. Puede ver el estado de las variables, emitir comandos e incluso recorrer el script paso a paso.
Para obtener una lista completa de los comandos de depuración, puede consultar la documentación de Microsoft aquí.
Ejemplo de conexión a un proceso de API
El siguiente es un ejemplo de cómo conectarse a un proceso de API.
Depuración con Visual Studio Code
Para depurar un script, puede usar el cmdlet Wait-Debugger dentro de su script para pausar el script hasta que se adjunte un depurador. A continuación, puede usar un depurador, como VS Code, para adjuntarse al proceso y al runspace para ver las variables, recorrer el código paso a paso y ejecutar comandos de depuración.
También puede depurar scripts usando los cmdlets integrados Enter-PSHostProcess, Get-Runspace y Debug-Runspace.
Última actualización
¿Te fue útil?