Set-PSBreakpoint
Establece un punto de interrupción en una línea, un comando o una variable.
Sintaxis
Set-PSBreakpoint
[-Action <ScriptBlock>]
[[-Column] <Int32>]
[-Line] <Int32[]>
[-Script] <String[]>
[-Runspace <Runspace>]
[<CommonParameters>]
Set-PSBreakpoint
[-Action <ScriptBlock>]
-Command <String[]>
[[-Script] <String[]>]
[-Runspace <Runspace>]
[<CommonParameters>]
Set-PSBreakpoint
[-Action <ScriptBlock>]
[[-Script] <String[]>]
-Variable <String[]>
[-Mode <VariableAccessMode>]
[-Runspace <Runspace>]
[<CommonParameters>]
Description
El Set-PSBreakpoint
cmdlet establece un punto de interrupción en un script o en cualquier comando que se ejecute en la sesión actual. Puede usar Set-PSBreakpoint
para establecer un punto de interrupción antes de ejecutar un script o ejecutar un comando, o durante la depuración, cuando se detiene en otro punto de interrupción.
Set-PSBreakpoint
no puede establecer un punto de interrupción en un equipo remoto. Para depurar un script en un equipo remoto, copie el script en el equipo local y depúrelo localmente.
Cada Set-PSBreakpoint
comando crea uno de los tres tipos siguientes de puntos de interrupción:
- Punto de interrupción de línea: establece puntos de interrupción en coordenadas de línea y columna concretas.
- Punto de interrupción de comandos: establece puntos de interrupción en comandos y funciones.
- Punto de interrupción variable: establece puntos de interrupción en variables.
Puede establecer un punto de interrupción en varias líneas, comandos o variables en un solo Set-PSBreakpoint
comando, pero cada Set-PSBreakpoint
comando establece solo un tipo de punto de interrupción.
En un punto de interrupción, PowerShell deja de ejecutarse temporalmente y proporciona control al depurador. El símbolo del sistema cambia a DBG\>
y un conjunto de comandos del depurador están disponibles para su uso. Sin embargo, puede usar el parámetro Action para especificar una respuesta alternativa, como condiciones para el punto de interrupción o instrucciones para realizar tareas adicionales, como el registro o el diagnóstico.
El Set-PSBreakpoint
cmdlet es uno de los varios cmdlets diseñados para depurar scripts de PowerShell.
Para obtener más información sobre el depurador de PowerShell, consulte about_Debuggers.
Ejemplos
Ejemplo 1: Establecer un punto de interrupción en una línea
En este ejemplo se establece un punto de interrupción en la línea 5 del script Sample.ps1. Cuando se ejecuta el script, la ejecución se detiene inmediatamente antes de que se ejecute la línea 5.
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
Cuando se establece un nuevo punto de interrupción por número de línea, el Set-PSBreakpoint
cmdlet genera un objeto de punto de interrupción de línea (System.Management.Automation.LineBreakpoint) que incluye el identificador de punto de interrupción y el recuento de llamadas.
Ejemplo 2: Establecer un punto de interrupción en una función
En este ejemplo se crea un punto de interrupción de comando en la Increment
función del cmdlet Sample.ps1. El script deja de ejecutarse inmediatamente antes de cada llamada a la función 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
El resultado es un objeto de punto de interrupción de comando. Antes de que se ejecute el script, el valor de la propiedad HitCount es 0.
Ejemplo 3: Establecer un punto de interrupción en una variable
En este ejemplo se establece un punto de interrupción en la variable Server en el script Sample.ps1. Usa el parámetro Mode con un valor de ReadWrite para detener la ejecución cuando se lee el valor de la variable y justo antes de que cambie el valor.
Set-PSBreakpoint -Script "sample.ps1" -Variable "Server" -Mode ReadWrite
Ejemplo 4: Establecer un punto de interrupción en cada comando que comience con el texto especificado
En este ejemplo se establece un punto de interrupción en todos los comandos del script Sample.ps1 que comienza por "write", como Write-Host
.
Set-PSBreakpoint -Script Sample.ps1 -Command "write*"
Ejemplo 5: Establecer un punto de interrupción en función del valor de una variable
En este ejemplo se detiene la ejecución en la DiskTest
función del Test.ps1
script solo cuando el valor de la $Disk
variable es mayor que 2.
Set-PSBreakpoint -Script "test.ps1" -Command "DiskTest" -Action { if ($Disk -gt 2) { break } }
El valor de Action es un bloque de script que prueba el valor de la $Disk
variable en la función.
La acción usa la palabra clave para detener la break
ejecución si se cumple la condición. La alternativa (y el valor predeterminado) es Continue.
Ejemplo 6: Establecer un punto de interrupción en una función
En este ejemplo se establece un punto de interrupción en la CheckLog
función . Dado que el comando no especifica un script, el punto de interrupción se establece en cualquier cosa que se ejecute en la sesión actual. El depurador se interrumpe cuando se llama a la función, no cuando se declara.
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'
Ejemplo 7: Establecer puntos de interrupción en varias líneas
En este ejemplo se establecen tres puntos de interrupción de línea en el script Sample.ps1. Establece un punto de interrupción en la columna 2 en cada una de las líneas especificadas en el script. La acción especificada en el parámetro Action se aplica a todos los puntos de interrupción.
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
Ejemplo 8: Establecer un punto de interrupción en un espacio de ejecución
En este ejemplo, se inicia un trabajo. El espacio de ejecución se almacena en una variable y se pasa al comando Set-PSBreakPoint
con el parámetro Runspace.
Start-Job -ScriptBlock {
Start-Sleep -Seconds 10
}
$runspace = Get-Runspace -Id 1
Set-PSBreakpoint -Command Start-Sleep -Runspace $runspace
Parámetros
-Action
Especifica los comandos que se ejecutan en cada punto de interrupción en lugar de interrumpir. Escriba un bloque de script que contenga los comandos. Puede utilizar este parámetro para establecer puntos de interrupción condicionales o realizar otras tareas, como pruebas o registro.
Si se omite este parámetro o no se especifica ninguna acción, la ejecución se detiene en el punto de interrupción y se inicia el depurador.
Cuando se usa el parámetro Action , el bloque De script de acción se ejecuta en cada punto de interrupción. La ejecución no detendrá a menos que el bloque de script incluya la palabra clave Break. Si utiliza la palabra clave Continue en el bloque de script, la ejecución continúa hasta el siguiente punto de interrupción.
Para obtener más información, consulte about_Script_Blocks, about_Break y about_Continue.
Tipo: | ScriptBlock |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Column
Especifica el número de la columna en el archivo de script en el que se detiene la ejecución. Escriba solo un número de columna. El valor predeterminado es la columna 1.
El valor column se usa con el valor del parámetro Line para especificar el punto de interrupción. Si el parámetro Line especifica varias líneas, el parámetro Column establece un punto de interrupción en la columna especificada en cada una de las líneas especificadas. PowerShell deja de ejecutarse antes de la instrucción o expresión que incluye el carácter en la posición de línea y columna especificadas.
Las columnas se cuentan desde el margen superior izquierdo comenzando por el número de columna 1 (no 0). Si se especifica una columna que no existe en el script, no se declara un error pero el punto de interrupción no se ejecuta nunca.
Tipo: | Int32 |
Posición: | 2 |
Valor predeterminado: | 1 |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Command
Establece un punto de interrupción de comando. Escriba nombres de cmdlet, como Get-Process
, o nombres de función. Se permiten los caracteres comodín.
La ejecución se detiene justo antes de que se ejecute cada instancia de cada comando. Si el comando es una función, la ejecución detiene cada vez que se llama a la función y en cada sección BEGIN, PROCESS y END.
Tipo: | String[] |
Alias: | C |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | True |
-Line
Establece un punto de interrupción de línea en un script. Escriba uno o más números de línea, separados por comas. PowerShell se detiene inmediatamente antes de ejecutar la instrucción que comienza en cada una de las líneas especificadas.
Las líneas se cuentan desde el margen superior izquierdo del archivo de script comenzando por el número de línea 1 (no 0). Si especifica una línea en blanco, la ejecución se detiene antes de la siguiente línea que no esté en blanco. Si la línea está fuera del intervalo, nunca se llama al punto de interrupción.
Tipo: | Int32[] |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Mode
Especifica el modo de acceso que desencadena puntos de interrupción variables. El valor predeterminado es Write.
Este parámetro solo es válido cuando se usa el parámetro Variable en el comando . El modo se aplica a todos los puntos de interrupción establecidos en el comando. Los valores permitidos para este parámetro son los siguientes:
- Escritura : detiene la ejecución inmediatamente antes de escribir un nuevo valor en la variable.
- Lectura : detiene la ejecución cuando se lee la variable, es decir, cuando se tiene acceso a su valor, ya sea para asignarse, mostrarse o usarse. En modo de lectura, la ejecución no se detiene cuando cambia el valor de la variable.
- ReadWrite : detiene la ejecución cuando la variable se lee o escribe.
Tipo: | VariableAccessMode |
Valores aceptados: | Read, Write, ReadWrite |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Runspace
Especifica el identificador de un objeto Runspace para que pueda interactuar con puntos de interrupción en el espacio de ejecución especificado.
Este parámetro se agregó en PowerShell 7.2.
Tipo: | Runspace |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Script
Especifica una matriz de archivos de script en los que este cmdlet establece un punto de interrupción. Especifique las rutas de acceso y los nombres de uno o más archivos de script. Si los archivos están en el directorio actual, puede omitir la ruta de acceso. Se permiten los caracteres comodín.
De forma predeterminada, se establecen puntos de interrupción de variable y puntos de interrupción de comando en cualquier comando que se ejecute en la sesión actual. Este parámetro es necesario solo cuando se establece un punto de interrupción de línea.
Tipo: | String[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Variable
Especifica una matriz de variables en las que este cmdlet establece puntos de interrupción. Escriba una lista separada por comas de variables sin signos de dólar ($
).
Use el parámetro Mode para determinar el modo de acceso que desencadena los puntos de interrupción. El modo predeterminado, Write, detiene la ejecución justo antes de que se escriba un nuevo valor en la variable.
Tipo: | String[] |
Alias: | V |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
None
No se pueden canalizar objetos a este cmdlet.
Salidas
Set-PSBreakpoint
devuelve un objeto que representa cada punto de interrupción que establece.
Notas
PowerShell incluye los siguientes alias para Set-PSBreakpoint
:
Todas las plataformas:
sbp
Set-PSBreakpoint
no puede establecer un punto de interrupción en un equipo remoto. Para depurar un script en un equipo remoto, copie el script en el equipo local y depúrelo localmente.Cuando se establece un punto de interrupción en más de una línea, comando o variable,
Set-PSBreakpoint
se genera un objeto de punto de interrupción para cada entrada.Al establecer un punto de interrupción en una función o variable en el símbolo del sistema, puede establecer el punto de interrupción antes o después de crear la función o variable.