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 cmdlet Set-PSBreakpoint
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, a continuación, depurelo localmente.
Cada comando Set-PSBreakpoint
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 comando de Set-PSBreakpoint
, pero cada comando Set-PSBreakpoint
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 cmdlet Set-PSBreakpoint
es uno de 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
Al establecer un nuevo punto de interrupción por número de línea, el cmdlet Set-PSBreakpoint
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 aciertos.
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 función Increment
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 de Server en el script de 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 cada comando del script de 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 función DiskTest
del script de Test.ps1
solo cuando el valor de la variable $Disk
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 variable $Disk
en la función.
La acción usa la palabra clave break
para detener la 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 función CheckLog
. Dado que el comando no especifica un script, el punto de interrupción se establece en todo lo que se ejecuta 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 de 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 usar este parámetro para establecer puntos de interrupción condicionales o para 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 se detiene a menos que el bloque de script incluya la palabra clave Break. Si usa la palabra clave Continue en el bloque de script, la ejecución se reanuda hasta el siguiente punto de interrupción.
Para obtener más información, vea about_Script_Blocks, about_Breaky 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 columna 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 a partir del número de columna 1 (no 0). Si especifica una columna que no existe en el script, no se declara un error, pero el punto de interrupción nunca se ejecuta.
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 comandos. Escriba nombres de cmdlet, como Get-Process
o nombres de función. Se permiten 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 se 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 varios 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 a partir del 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 no vacía. Si la línea está fuera del intervalo, el punto de interrupción nunca se alcanza.
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 escritura.
Este parámetro solo es válido cuando el parámetro variable se usa en el comando . El modo se aplica a todos los puntos de interrupción establecidos en el comando . Los valores aceptables para este parámetro son:
- escribir: detiene la ejecución inmediatamente antes de escribir un nuevo valor en la variable.
- read: detiene la ejecución cuando se lee la variable, es decir, cuando se accede a su valor, ya sea para asignarse, mostrarse o usarse. En el 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. Escriba las rutas de acceso y los nombres de archivo de uno o varios archivos de script. Si los archivos están en el directorio actual, puede omitir la ruta de acceso. Se permiten caracteres comodín.
De forma predeterminada, los puntos de interrupción variables y los puntos de interrupción de comandos se establecen en cualquier comando que se ejecute en la sesión actual. Este parámetro solo es necesario al establecer 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, Escritura, detiene la ejecución justo antes de escribir 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, a continuación, depurelo localmente.Cuando se establece un punto de interrupción en más de una línea, comando o variable,
Set-PSBreakpoint
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.