Compartilhar via


Debug-Runspace

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

Sintaxe

RunspaceParameterSet (Default)

Debug-Runspace
    [-Runspace] <Runspace>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Debug-Runspace
    [-Name] <String>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

IdParameterSet

Debug-Runspace
    [-Id] <Int32>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

Debug-Runspace
    [-InstanceId] <Guid>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

O cmdlet Debug-Runspace inicia uma sessão de depuração interativa com um runspace ativo local ou remoto. Você pode encontrar um runspace que deseja depurar primeiro executando para localizar processos associados ao PowerShell e, em seguida, com a ID do processo especificada no parâmetro da ID do para anexar ao processo e, em seguida, listar runspaces dentro do processo de host do PowerShell.

Depois de selecionar um runspace para depurar, se o runspace estiver executando um comando ou script no momento ou se o script tiver parado em um ponto de interrupção, o PowerShell abrirá uma sessão de depurador remoto para o runspace. Você pode depurar o script de runspace da mesma forma que os scripts de sessão remota são depurados.

Você só poderá anexar a um processo de host do PowerShell se você 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 runspace remoto

Neste exemplo, você depura um runspace aberto em um computador remoto, WS10TestServer. Na primeira linha do comando, você executa Get-Process no computador remoto e filtra para 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-PSHostProcesse especificando a ID do processo de host obtido no primeiro comando, 1152.

No quarto comando, você lista os runspaces disponíveis para a ID do processo 1152 executando Get-Runspace. Você observa o número de ID do runspace Ocupado; ele está executando um script que você deseja depurar.

No último comando, você começa a depurar um runspace aberto que está executando um script, TestWFVar1.ps1, executando Debug-Runspacee identificando o runspace por sua 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ê interrompa imediatamente no local atual quando o depurador é anexado.

Esse parâmetro foi adicionado ao PowerShell 7.2.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Confirm

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

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:True
Dá suporte a curingas:False
DontShow:False
Aliases:cf

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Id

Especifica o número de ID de um runspace. Você pode executar Get-Runspace para mostrar IDs de runspace.

Propriedades do parâmetro

Tipo:Int32
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

IdParameterSet
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-InstanceId

Especifica um runspace por sua ID de instância, um GUID que você pode mostrar executando Get-Runspace.

Propriedades do parâmetro

Tipo:Guid
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

InstanceIdParameterSet
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Name

Especifica um runspace pelo nome. Você pode executar Get-Runspace para mostrar os nomes dos runspaces.

Propriedades do parâmetro

Tipo:String
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

NameParameterSet
Cargo:0
Obrigatório:True
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

-Runspace

Especifica um objeto de runspace. A maneira mais simples de fornecer um valor para esse parâmetro é especificar uma variável que contenha os resultados de um comando Get-Runspace filtrado.

Propriedades do parâmetro

Tipo:Runspace
Valor padrão:None
Dá suporte a curingas:False
DontShow:False

Conjuntos de parâmetros

RunspaceParameterSet
Cargo:0
Obrigatório:True
Valor do pipeline:True
Valor do pipeline pelo nome da propriedade:True
Valor dos argumentos restantes:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Propriedades do parâmetro

Tipo:SwitchParameter
Valor padrão:True
Dá suporte a curingas:False
DontShow:False
Aliases:wi

Conjuntos de parâmetros

(All)
Cargo:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline pelo nome da propriedade:False
Valor dos argumentos restantes:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

Runspace

Você pode canalizar os resultados de um comando Get-Runspace para este cmdlet.

Observações

Debug-Runspace funciona em runspaces que estão no estado Aberto. Se um estado de runspace for alterado de Aberto para outro estado, esse runspace será removido automaticamente da lista em execução. Um runspace será adicionado à lista em execução somente se atender aos critérios a seguir.

  • Se ele for proveniente de Invoke-Command; ou seja, ele tem uma ID do GUID Invoke-Command.
  • Se ele vem de Debug-Runspace; ou seja, ele tem uma ID do GUID Debug-Runspace.
  • Se ele for proveniente de um fluxo de trabalho do PowerShell e sua ID de trabalho de fluxo de trabalho for igual à ID do trabalho de fluxo de trabalho do depurador ativo atual.