Debug-Runspace
Inicia una sesión de depuración interactiva con un espacio de ejecución.
Syntax
Debug-Runspace
[-Runspace] <Runspace>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Name] <String>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Id] <Int32>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-InstanceId] <Guid>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
El Debug-Runspace
cmdlet inicia una sesión de depuración interactiva con un espacio de ejecución activo local o remoto. Puede encontrar un espacio de ejecución que quiera depurar ejecutando primero Get-Process
para buscar procesos asociados a PowerShell, luego Enter-PSHostProcess
con el identificador de proceso especificado en el parámetro Id para asociar al proceso y, a continuación Get-Runspace
, para enumerar los espacios de ejecución dentro del proceso de host de PowerShell.
Después de seleccionar un espacio de ejecución para depurar, si el espacio de ejecución está ejecutando actualmente un comando o script, o si el script se ha detenido en un punto de interrupción, PowerShell abre una sesión del depurador remoto para el espacio de ejecución. Puede depurar el script de espacio de ejecución de la misma manera que se depuran los scripts de sesión remota.
Solo puede asociarse a un proceso de host de PowerShell si es administrador en el equipo que ejecuta el proceso o ejecuta el script que desea depurar. Además, no puede escribir el proceso de host que ejecuta la sesión actual de PowerShell. Solo puede escribir un proceso de host que ejecute una sesión de PowerShell diferente.
Ejemplos
Ejemplo 1: Depuración de un espacio de ejecución remoto
En este ejemplo, depura un espacio de ejecución que está abierto en un equipo remoto, WS10TestServer. En la primera línea del comando, se ejecuta Get-Process
en el equipo remoto y se filtran los procesos de host de Windows PowerShell. En este ejemplo, quiere depurar el identificador de proceso 1152, el proceso de host de ISE de Windows PowerShell.
PS C:\> Get-Process -ComputerName "WS10TestServer" -Name "*powershell*"
Handles WS(K) VM(M) CPU(s) Id ProcessName
------- ----- ----- ------ -- -----------
377 69912 63 2.09 2420 powershell
399 123396 829 4.48 1152 powershell_ise
PS C:\> Enter-PSSession -ComputerName "WS10TestServer"
[WS10TestServer]:PS C:\> Enter-PSHostProcess -Id 1152
[WS10TestServer:][Process:1152]: PS C:\Users\Test\Documents> Get-Runspace
Id Name ComputerName Type State Availability
-- ---- ------------ ---- ----- ------------
1 Runspace1 WS10TestServer Remote Opened Available
2 RemoteHost WS10TestServer Remote Opened Busy
[WS10TestServer][Process:1152]: PS C:\Users\Test\Documents> Debug-Runspace -Id 2
Hit Line breakpoint on 'C:\TestWFVar1.ps1:83'
At C:\TestWFVar1.ps1:83 char:1
+ $scriptVar = "Script Variable"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Process:1152]: [RSDBG: 2]: PS C:\> >
En el segundo comando, se ejecuta Enter-PSSession
para abrir una sesión remota en WS10TestServer. En el tercer comando, se adjunta al proceso de host de Windows PowerShell ISE que se ejecuta en el servidor remoto ejecutando Enter-PSHostProcess
y especificando el identificador del proceso de host que obtuvo en el primer comando, 1152.
En el cuarto comando, se enumeran los espacios de ejecución disponibles para el identificador de proceso 1152 mediante la ejecución Get-Runspace
de .
Anote el número de identificador del espacio de ejecución Ocupado; ejecuta un script que desea depurar.
En el último comando, se inicia la depuración de un espacio de ejecución abierto que ejecuta un script, TestWFVar1.ps1
, ejecutando Debug-Runspace
e identificando el espacio de ejecución por su identificador, 2, agregando el parámetro Id . Dado que hay un punto de interrupción en el script, se abre el depurador.
Parámetros
-BreakAll
Permite interrumpir inmediatamente en la ubicación actual cuando el depurador se adjunta.
Este parámetro se agregó en PowerShell 7.2.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Le solicita su confirmación antes de ejecutar el cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | True |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Especifica el número de identificador de un espacio de ejecución. Puede ejecutar Get-Runspace
para mostrar identificadores de espacio de ejecución.
Type: | Int32 |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InstanceId
Especifica un espacio de ejecución por su identificador de instancia, un GUID que puede mostrar mediante la ejecución Get-Runspace
de .
Type: | Guid |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Especifica un espacio de ejecución por su nombre. Puede ejecutar Get-Runspace
para mostrar los nombres de los espacios de ejecución.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Runspace
Especifica un objeto de espacio de ejecución. La manera más sencilla de proporcionar un valor para este parámetro es especificar una variable que contenga los resultados de un comando filtrado Get-Runspace
.
Type: | Runspace |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | True |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Puede canalizar los resultados de un Get-Runspace
comando a este cmdlet.
Notas
Debug-Runspace
funciona en los espacios de ejecución que están en estado Abierto. Si un estado de espacio de ejecución cambia de Abierto a otro estado, ese espacio de ejecución se quita automáticamente de la lista de ejecución. Solo se agrega un espacio de ejecución a la lista en ejecución si cumple los siguientes criterios.
- Si procede de Invoke-Command; es decir, tiene un
Invoke-Command
identificador GUID. - Si procede de
Debug-Runspace
; es decir, tiene unDebug-Runspace
identificador GUID. - Si procede de un flujo de trabajo de PowerShell y su identificador de trabajo de flujo de trabajo es el mismo que el identificador de trabajo del flujo de trabajo del depurador activo actual.