Debug-Runspace

Inicia uma sessão de depuração interativa com um espaço de execução.

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

O Debug-Runspace cmdlet inicia uma sessão de depuração interativa com um espaço de execução ativo local ou remoto. Pode encontrar um espaço de execução que pretende depurar ao executar Get-Process primeiro para localizar processos associados ao PowerShell e, em seguida Enter-PSHostProcess , com o ID do processo especificado no parâmetro ID para anexar ao processo e, em seguida Get-Runspace , listar os espaços de execução no processo de anfitrião do PowerShell.

Depois de selecionar um espaço de execução para depurar, se o runspace estiver atualmente a executar um comando ou script, ou se o script tiver parado num ponto de interrupção, o PowerShell abre uma sessão de depurador remoto para o espaço de execução. Pode depurar o script de área de execução da mesma forma que os scripts de sessão remota são depurados.

Só pode anexar a um processo de anfitrião do PowerShell se for um administrador no computador que está a executar o processo ou se estiver a executar o script que pretende depurar. Além disso, não pode introduzir o processo de anfitrião que está a executar a sessão atual do PowerShell. Só pode introduzir um processo de anfitrião que esteja a executar uma sessão do PowerShell diferente.

Exemplos

Exemplo 1: Depurar um espaço de execução remoto

Neste exemplo, vai depurar um espaço de execução aberto num computador remoto WS10TestServer. Na primeira linha do comando, é executado Get-Process no computador remoto e filtra Windows PowerShell processos de anfitrião. Neste exemplo, quer depurar o ID do processo 1152, o processo de anfitrião ise 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:\> >

No segundo comando, execute Enter-PSSession para abrir uma sessão remota no WS10TestServer. No terceiro comando, anexa ao Windows PowerShell processo de anfitrião ISE em execução no servidor remoto ao executar Enter-PSHostProcesse especificar o ID do processo de anfitrião que obteve no primeiro comando, 1152.

No quarto comando, lista os espaços de execução disponíveis para o ID de processo 1152 ao executar Get-Runspace. Anote o número de ID do espaço de execução Ocupado; está a executar um script que pretende depurar.

No último comando, começa a depurar um espaço de execução aberto que está a executar um script, TestWFVar1.ps1, ao executar Debug-Runspacee identificar o espaço de execução pelo respetivo ID, 2, ao adicionar o parâmetro ID . Uma vez que existe um ponto de interrupção no script, o depurador é aberto.

Parâmetros

-BreakAll

Permite-lhe interromper imediatamente a localização atual quando o depurador é anexado.

Este parâmetro foi adicionado ao PowerShell 7.2.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Solicita a sua confirmação antes de executar o cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:True
Accept pipeline input:False
Accept wildcard characters:False

-Id

Especifica o número de ID de um espaço de execução. Pode executar Get-Runspace para mostrar os IDs do espaço de execução.

Type:Int32
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-InstanceId

Especifica um espaço de execução pelo respetivo ID de instância, um GUID que pode mostrar ao executar Get-Runspace.

Type:Guid
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Name

Especifica um espaço de execução pelo respetivo nome. Pode executar Get-Runspace para mostrar os nomes dos runspaces.

Type:String
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Runspace

Especifica um objeto de espaço de execução. A forma mais simples de fornecer um valor para este parâmetro é especificar uma variável que contenha os resultados de um comando filtrado Get-Runspace .

Type:Runspace
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Apresenta o que aconteceria mediante a execução do cmdlet. O cmdlet não é executado.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:True
Accept pipeline input:False
Accept wildcard characters:False

Entradas

Runspace

Pode encaminhar os resultados de um Get-Runspace comando para este cmdlet.

Notas

Debug-Runspace funciona em áreas de execução que estão no estado Aberto. Se o estado de um espaço de execução mudar de Aberto para outro estado, esse espaço de execução é removido automaticamente da lista em execução. Uma área de execução só é adicionada à lista em execução se cumprir os seguintes critérios.

  • Se for proveniente de Invoke-Command; ou seja, tem um Invoke-Command ID de GUID.
  • Se for proveniente de Debug-Runspace; ou seja, tem um Debug-Runspace ID de GUID.
  • Se for proveniente de um fluxo de trabalho do PowerShell e o ID da tarefa do fluxo de trabalho for o mesmo que o ID do fluxo de trabalho do depurador ativo atual.