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. Você pode encontrar um espaço de execução que deseja depurar executando primeiro Get-Process
para localizar processos associados ao PowerShell, depois Enter-PSHostProcess
com a ID do processo especificada no parâmetro Id para anexar ao processo e, em seguida Get-Runspace
, listar espaços de execução dentro do processo de host do PowerShell.
Depois de selecionar um espaço de execução para depurar, se o espaço de execução estiver executando um comando ou script ou se o script tiver parado em um ponto de interrupção, o PowerShell abrirá uma sessão de depurador remoto para o espaço de execução. Você pode depurar o script de espaço de execução da mesma forma que os scripts de sessão remota são depurados.
Você só pode anexar a um processo de host do PowerShell se for um administrador no computador que está executando o processo ou se estiver executando o script que deseja depurar. Além disso, você não pode inserir o processo de host que está executando a sessão atual do PowerShell. Você só pode inserir um processo de host que esteja executando uma sessão diferente do PowerShell.
Exemplos
Exemplo 1: Depurar um espaço de execução remoto
Neste exemplo, você depurar um espaço de execução que está aberto em um computador remoto, WS10TestServer. Na primeira linha do comando, você executa Get-Process
no computador remoto e filtra os processos de host do Windows PowerShell. Neste exemplo, você deseja depurar a ID do processo 1152, o processo de host ISE do 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, você executa Enter-PSSession
para abrir uma sessão remota no WS10TestServer. No terceiro comando, você anexa ao processo de host ISE do Windows PowerShell em execução no servidor remoto executando Enter-PSHostProcess
o e especificando a ID do processo de host obtido no primeiro comando, 1152.
No quarto comando, você lista os espaços de execução disponíveis para a ID do processo 1152 executando Get-Runspace
.
Você anota o número de ID do espaço de execução ocupado; ele está executando um script que você deseja depurar.
No último comando, você começa a depurar um espaço de execução aberto que está executando um script, TestWFVar1.ps1
, executando Debug-Runspace
e identificando o espaço de execução por seu ID, 2, adicionando o parâmetro Id . Como há um ponto de interrupção no script, o depurador é aberto.
Parâmetros
-BreakAll
Permite que você quebre imediatamente no local atual quando o depurador for anexado.
Esse parâmetro foi adicionado no PowerShell 7.2.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Solicita sua confirmação antes de executar o cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | True |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Especifica o número de ID de um espaço de execução. Você pode executar Get-Runspace
para mostrar IDs de espaço de execução.
Type: | Int32 |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InstanceId
Especifica um espaço de execução por sua ID de instância, um GUID que você pode mostrar executando Get-Runspace
.
Type: | Guid |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Especifica um espaço de execução pelo nome. Você pode executar Get-Runspace
para mostrar os nomes dos espaços de execução.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Runspace
Especifica um objeto runspace. A maneira mais simples de fornecer um valor para esse parâmetro é especificar uma variável que contenha os resultados de um comando filtrado Get-Runspace
.
Type: | Runspace |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | True |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Você pode canalizar os resultados de um Get-Runspace
comando para esse cmdlet.
Observações
Debug-Runspace
funciona em espaços de execução que estão no estado Aberto. Se um estado de espaço de execução for alterado de Aberto para outro estado, esse espaço de execução será automaticamente removido da lista de execução. Um espaço de execução será adicionado à lista em execução somente se atender aos seguintes critérios.
- Se for proveniente de Invoke-Command; ou seja, ele tem um
Invoke-Command
ID GUID. - Se ele é proveniente de
Debug-Runspace
, ou seja, ele tem umDebug-Runspace
ID GUID. - Se ele for proveniente de um fluxo de trabalho do PowerShell e sua ID de trabalho de fluxo de trabalho for a mesma que a ID de trabalho de fluxo de trabalho do depurador ativo atual.