Compartir a través de


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-PSHostProcessy 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-Runspacede . 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-Runspacee 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-Runspacede .

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

Runspace

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 un Debug-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.