Set-PSBreakpoint
Define um ponto de interrupção em uma linha, comando ou variável.
Sintaxe
Set-PSBreakpoint
[-Action <ScriptBlock>]
[[-Column] <Int32>]
[-Line] <Int32[]>
[-Script] <String[]>
[<CommonParameters>]
Set-PSBreakpoint
[-Action <ScriptBlock>]
-Command <String[]>
[[-Script] <String[]>]
[<CommonParameters>]
Set-PSBreakpoint
[-Action <ScriptBlock>]
[[-Script] <String[]>]
-Variable <String[]>
[-Mode <VariableAccessMode>]
[<CommonParameters>]
Description
O cmdlet Set-PSBreakpoint
define um ponto de interrupção em um script ou em qualquer execução de comando na sessão atual. Você pode usar Set-PSBreakpoint
para definir um ponto de interrupção antes de executar um script ou executar um comando, ou durante a depuração, quando parado em outro ponto de interrupção.
Set-PSBreakpoint
não pode definir um ponto de interrupção em um computador remoto. Para depurar um script em um computador remoto, copie o script para o computador local e, em seguida, depure-o localmente.
Cada comando Set-PSBreakpoint
cria um dos três seguintes tipos de pontos de interrupção:
- Ponto de interrupção de linha – define pontos de interrupção em coordenadas de linha e coluna específicas.
- Ponto de interrupção de comando – define pontos de interrupção em comandos e funções.
- Ponto de interrupção variável – define pontos de interrupção em variáveis.
Você pode definir um ponto de interrupção em várias linhas, comandos ou variáveis em um único comando Set-PSBreakpoint
, mas cada comando Set-PSBreakpoint
define apenas um tipo de ponto de interrupção.
Em um ponto de interrupção, o PowerShell interrompe temporariamente a execução e dá controle ao depurador. O prompt de comando é alterado para DBG\>
e um conjunto de comandos de depurador fica disponível para uso. No entanto, você pode usar o parâmetro Action para especificar uma resposta alternativa, como condições para o ponto de interrupção ou instruções para executar tarefas adicionais, como registro em log ou diagnóstico.
O cmdlet Set-PSBreakpoint
é um dos vários cmdlets projetados para depurar scripts do PowerShell.
Para obter mais informações sobre o depurador do PowerShell, consulte about_Debuggers.
Exemplos
Exemplo 1: Definir um ponto de interrupção em uma linha
Este exemplo define um ponto de interrupção na linha 5 no script Sample.ps1. Quando o script é executado, a execução é interrompida imediatamente antes que a linha 5 seja executada.
Set-PSBreakpoint -Script "sample.ps1" -Line 5
Column : 0
Line : 5
Action :
Enabled : True
HitCount : 0
Id : 0
Script : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1
Quando você define um novo ponto de interrupção por número de linha, o cmdlet Set-PSBreakpoint
gera um objeto de ponto de interrupção de linha (System.Management.Automation.LineBreakpoint) que inclui a ID do ponto de interrupção e a contagem de ocorrências.
Exemplo 2: Definir um ponto de interrupção em uma função
Este exemplo cria um ponto de interrupção de comando na função Increment
no cmdlet Sample.ps1. O script interrompe a execução imediatamente antes de cada chamada para a função especificada.
Set-PSBreakpoint -Command "Increment" -Script "sample.ps1"
Command : Increment
Action :
Enabled : True
HitCount : 0
Id : 1
Script : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1
O resultado é um objeto de ponto de interrupção de comando. Antes da execução do script, o valor da propriedade HitCount é 0.
Exemplo 3: Definir um ponto de interrupção em uma variável
Este exemplo define um ponto de interrupção na variável servidor
Set-PSBreakpoint -Script "sample.ps1" -Variable "Server" -Mode ReadWrite
Exemplo 4: Definir um ponto de interrupção em cada comando que começa com o texto especificado
Este exemplo define um ponto de interrupção em cada comando no script Sample.ps1 que começa com "write", como Write-Host
.
Set-PSBreakpoint -Script Sample.ps1 -Command "write*"
Exemplo 5: Definir um ponto de interrupção dependendo do valor de uma variável
Este exemplo interrompe a execução na função DiskTest
no script Test.ps1 somente quando o valor da variável $Disk
for maior que 2.
Set-PSBreakpoint -Script "test.ps1" -Command "DiskTest" -Action { if ($Disk -gt 2) { break } }
O valor do Action é um bloco de script que testa o valor da variável $Disk
na função.
A ação usa a palavra-chave break
para interromper a execução se a condição for atendida. A alternativa (e o padrão) é Continuar.
Exemplo 6: Definir um ponto de interrupção em uma função
Este exemplo define um ponto de interrupção na função CheckLog
. Como o comando não especifica um script, o ponto de interrupção é definido em qualquer coisa que seja executada na sessão atual. O depurador é interrompido quando a função é chamada, não quando é declarada.
PS> Set-PSBreakpoint -Command "checklog"
Id : 0
Command : checklog
Enabled : True
HitCount : 0
Action :
function CheckLog {
>> get-eventlog -log Application |
>> where {($_.source -like "TestApp") -and ($_.Message -like "*failed*")}
>>}
>>
PS> Checklog
DEBUG: Hit breakpoint(s)
DEBUG: Function breakpoint on 'prompt:Checklog'
Exemplo 7: Definir pontos de interrupção em várias linhas
Este exemplo define três pontos de interrupção de linha no script Sample.ps1. Ele define um ponto de interrupção na coluna 2 em cada uma das linhas especificadas no script. A ação especificada no parâmetro Action se aplica a todos os pontos de interrupção.
PS C:\> Set-PSBreakpoint -Script "sample.ps1" -Line 1, 14, 19 -Column 2 -Action {&(log.ps1)}
Column : 2
Line : 1
Action :
Enabled : True
HitCount : 0
Id : 6
Script : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1
Column : 2
Line : 14
Action :
Enabled : True
HitCount : 0
Id : 7
Script : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1
Column : 2
Line : 19
Action :
Enabled : True
HitCount : 0
Id : 8
Script : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1
Parâmetros
-Action
Especifica os comandos executados em cada ponto de interrupção em vez de quebrar. Insira um bloco de script que contenha os comandos. Você pode usar esse parâmetro para definir pontos de interrupção condicionais ou executar outras tarefas, como teste ou registro em log.
Se esse parâmetro for omitido ou nenhuma ação for especificada, a execução será interrompida no ponto de interrupção e o depurador será iniciado.
Quando o parâmetro Action é usado, o bloco de script de ação é executado em cada ponto de interrupção. A execução não é interrompida, a menos que o bloco de script inclua a palavra-chave Break. Se você usar a palavra-chave Continuar no bloco de script, a execução será retomada até o próximo ponto de interrupção.
Para obter mais informações, consulte about_Script_Blocks, about_Breake about_Continue.
Tipo: | ScriptBlock |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Column
Especifica o número da coluna no arquivo de script no qual a execução é interrompida. Insira apenas um número de coluna. O padrão é a coluna 1.
O valor da coluna é usado com o valor do parâmetro de Linha
As colunas são contadas da margem superior esquerda começando com o número da coluna 1 (não 0). Se você especificar uma coluna que não existe no script, um erro não será declarado, mas o ponto de interrupção nunca será executado.
Tipo: | Int32 |
Cargo: | 2 |
Valor padrão: | 1 |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Command
Define um ponto de interrupção de comando. Insira nomes de cmdlet, como Get-Process
ou nomes de função. Curingas são permitidos.
A execução é interrompida pouco antes de cada instância de cada comando ser executada. Se o comando for uma função, a execução será interrompida sempre que a função for chamada e em cada seção BEGIN, PROCESS e END.
Tipo: | String[] |
Aliases: | C |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | True |
-Line
Define um ponto de interrupção de linha em um script. Insira um ou mais números de linha, separados por vírgulas. O PowerShell é interrompido imediatamente antes de executar a instrução que começa em cada uma das linhas especificadas.
As linhas são contadas da margem superior esquerda do arquivo de script começando com a linha número 1 (não 0). Se você especificar uma linha em branco, a execução será interrompida antes da próxima linha não em branco. Se a linha estiver fora do intervalo, o ponto de interrupção nunca será atingido.
Tipo: | Int32[] |
Cargo: | 1 |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Mode
Especifica o modo de acesso que dispara pontos de interrupção variáveis. O padrão é Gravação.
Esse parâmetro é válido somente quando o parâmetro Variable é usado no comando. O modo se aplica a todos os pontos de interrupção definidos no comando. Os valores aceitáveis para este parâmetro são:
- Gravação – interrompe a execução imediatamente antes que um novo valor seja gravado na variável.
- Leitura – interrompe a execução quando a variável é lida, ou seja, quando seu valor é acessado, para ser atribuído, exibido ou usado. No modo de leitura, a execução não é interrompida quando o valor da variável é alterado.
- ReadWrite – interrompe a execução quando a variável é lida ou gravada.
Tipo: | VariableAccessMode |
Valores aceitos: | Read, Write, ReadWrite |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Script
Especifica uma matriz de arquivos de script em que esse cmdlet define um ponto de interrupção. Insira os caminhos e os nomes de arquivo de um ou mais arquivos de script. Se os arquivos estiverem no diretório atual, você poderá omitir o caminho. Curingas são permitidos.
Por padrão, pontos de interrupção variáveis e pontos de interrupção de comando são definidos em qualquer comando executado na sessão atual. Esse parâmetro é necessário somente ao definir um ponto de interrupção de linha.
Tipo: | String[] |
Cargo: | 0 |
Valor padrão: | None |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Variable
Especifica uma matriz de variáveis em que esse cmdlet define pontos de interrupção. Insira uma lista separada por vírgulas de variáveis sem sinais de dólar ($
).
Use o parâmetro Mode para determinar o modo de acesso que dispara os pontos de interrupção. O modo padrão, Gravação, interrompe a execução pouco antes de um novo valor ser gravado na variável.
Tipo: | String[] |
Aliases: | V |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
Entradas
None
Não é possível redirecionar a entrada para Set-PSBreakpoint
.
Saídas
Breakpoint object (System.Management.Automation.LineBreakpoint, System.Management.Automation.VariableBreakpoint, System.Management.Automation.CommandBreakpoint)
Set-PSBreakpoint
retorna um objeto que representa cada ponto de interrupção que ele define.
Observações
-
Set-PSBreakpoint
não pode definir um ponto de interrupção em um computador remoto. Para depurar um script em um computador remoto, copie o script para o computador local e, em seguida, depure-o localmente. - Quando você define um ponto de interrupção em mais de uma linha, comando ou variável,
Set-PSBreakpoint
gera um objeto de ponto de interrupção para cada entrada. - Ao definir um ponto de interrupção em uma função ou variável no prompt de comando, você pode definir o ponto de interrupção antes ou depois de criar a função ou variável.