Delen via


Set-PSBreakpoint

Hiermee stelt u een onderbrekingspunt in op een regel, opdracht of variabele.

Syntaxis

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

Met de Set-PSBreakpoint-cmdlet wordt een onderbrekingspunt ingesteld in een script of in een opdracht die wordt uitgevoerd in de huidige sessie. U kunt Set-PSBreakpoint gebruiken om een onderbrekingspunt in te stellen voordat u een script uitvoert of een opdracht uitvoert, of tijdens foutopsporing, wanneer deze is gestopt bij een ander onderbrekingspunt.

Set-PSBreakpoint kan geen onderbrekingspunt instellen op een externe computer. Als u fouten wilt opsporen in een script op een externe computer, kopieert u het script naar de lokale computer en voert u lokaal fouten in.

Elke Set-PSBreakpoint opdracht maakt een van de volgende drie typen onderbrekingspunten:

  • Regelonderbrekingspunt- Hiermee stelt u onderbrekingspunten in op bepaalde lijn- en kolomcoördinaten.
  • Opdrachtonderbrekingspunt- Hiermee stelt u onderbrekingspunten in voor opdrachten en functies.
  • Variabele onderbrekingspunt : hiermee stelt u onderbrekingspunten in op variabelen.

U kunt een onderbrekingspunt instellen op meerdere regels, opdrachten of variabelen in één Set-PSBreakpoint opdracht, maar elke Set-PSBreakpoint opdracht stelt slechts één type onderbrekingspunt in.

Op een onderbrekingspunt stopt PowerShell tijdelijk met uitvoeren en geeft het controle over het foutopsporingsprogramma. De opdrachtprompt verandert in DBG\>en er zijn een set foutopsporingsprogramma-opdrachten beschikbaar voor gebruik. U kunt echter de parameter Action gebruiken om een alternatief antwoord op te geven, zoals voorwaarden voor het onderbrekingspunt of instructies voor het uitvoeren van extra taken, zoals logboekregistratie of diagnostische gegevens.

De Set-PSBreakpoint cmdlet is een van de verschillende cmdlets die zijn ontworpen voor het opsporen van fouten in PowerShell-scripts. Zie about_Debuggersvoor meer informatie over het PowerShell-foutopsporingsprogramma.

Voorbeelden

Voorbeeld 1: Een onderbrekingspunt instellen op een regel

In dit voorbeeld wordt een onderbrekingspunt ingesteld op regel 5 in het Sample.ps1 script. Wanneer het script wordt uitgevoerd, stopt de uitvoering onmiddellijk voordat regel 5 wordt uitgevoerd.

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

Wanneer u een nieuw onderbrekingspunt instelt op regelnummer, genereert de cmdlet Set-PSBreakpoint een regeleindepuntobject (System.Management.Automation.LineBreakpoint) dat de onderbrekingspunt-id en het aantal treffers bevat.

Voorbeeld 2: Een onderbrekingspunt instellen voor een functie

In dit voorbeeld wordt een onderbrekingspunt voor opdrachten gemaakt op de functie Increment in de cmdlet Sample.ps1. Het script wordt niet meer uitgevoerd voordat elke aanroep naar de opgegeven functie wordt uitgevoerd.

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

Het resultaat is een opdrachtonderbrekingspuntobject. Voordat het script wordt uitgevoerd, is de waarde van de eigenschap HitCount 0.

Voorbeeld 3: Een onderbrekingspunt instellen voor een variabele

In dit voorbeeld wordt een onderbrekingspunt ingesteld op de variabele Server in het script Sample.ps1. Hierbij wordt de parameter Modus gebruikt met een waarde van ReadWrite- om de uitvoering te stoppen wanneer de waarde van de variabele wordt gelezen en net voordat de waarde wordt gewijzigd.

Set-PSBreakpoint -Script "sample.ps1" -Variable "Server" -Mode ReadWrite

Voorbeeld 4: Een onderbrekingspunt instellen voor elke opdracht die begint met opgegeven tekst

In dit voorbeeld wordt een onderbrekingspunt ingesteld voor elke opdracht in het Sample.ps1 script dat begint met 'schrijven', zoals Write-Host.

Set-PSBreakpoint -Script Sample.ps1 -Command "write*"

Voorbeeld 5: Een onderbrekingspunt instellen, afhankelijk van de waarde van een variabele

In dit voorbeeld wordt de uitvoering van de DiskTest functie in het Test.ps1 script alleen gestopt wanneer de waarde van de variabele $Disk groter is dan 2.

Set-PSBreakpoint -Script "test.ps1" -Command "DiskTest" -Action { if ($Disk -gt 2) { break } }

De waarde van de Action is een scriptblok waarmee de waarde van de $Disk variabele in de functie wordt getest.

De actie gebruikt het break trefwoord om de uitvoering te stoppen als aan de voorwaarde wordt voldaan. Het alternatief (en de standaardinstelling) is Continue.

Voorbeeld 6: Een onderbrekingspunt instellen voor een functie

In dit voorbeeld wordt een onderbrekingspunt ingesteld op de functie CheckLog. Omdat de opdracht geen script opgeeft, wordt het onderbrekingspunt ingesteld op alles wat in de huidige sessie wordt uitgevoerd. Het foutopsporingsprogramma wordt verbroken wanneer de functie wordt aangeroepen, niet wanneer deze wordt gedeclareerd.

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'

Voorbeeld 7: Onderbrekingspunten instellen op meerdere regels

In dit voorbeeld worden drie regelonderbrekingspunten ingesteld in het Sample.ps1 script. Er wordt één onderbrekingspunt ingesteld op kolom 2 op elk van de regels die in het script zijn opgegeven. De actie die is opgegeven in de parameter Action is van toepassing op alle onderbrekingspunten.

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

Voorbeeld 8: Een onderbrekingspunt instellen in een runspace

In dit voorbeeld wordt een taak gestart. De runspace wordt opgeslagen in een variabele en doorgegeven aan de opdracht Set-PSBreakPoint met de parameter Runspace.

Start-Job -ScriptBlock {
    Start-Sleep -Seconds 10
}

$runspace = Get-Runspace -Id 1

Set-PSBreakpoint -Command Start-Sleep -Runspace $runspace

Parameters

-Action

Hiermee geeft u opdrachten die worden uitgevoerd op elk onderbrekingspunt in plaats van te breken. Voer een scriptblok in dat de opdrachten bevat. U kunt deze parameter gebruiken om voorwaardelijke onderbrekingspunten in te stellen of om andere taken uit te voeren, zoals testen of logboekregistratie.

Als deze parameter wordt weggelaten of er geen actie is opgegeven, stopt de uitvoering bij het onderbrekingspunt en wordt het foutopsporingsprogramma gestart.

Wanneer de parameter Action wordt gebruikt, wordt het scriptblok Actie uitgevoerd op elk onderbrekingspunt. De uitvoering stopt alleen als het scriptblok het trefwoord Einde bevat. Als u het trefwoord Doorgaan in het scriptblok gebruikt, wordt de uitvoering hervat tot het volgende onderbrekingspunt.

Zie about_Script_Blocks, about_Breaken about_Continuevoor meer informatie.

Type:ScriptBlock
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Column

Hiermee geeft u het kolomnummer van de kolom in het scriptbestand waarop de uitvoering stopt. Voer slechts één kolomnummer in. De standaardwaarde is kolom 1.

De kolomwaarde wordt gebruikt met de waarde van de parameter Regel om het onderbrekingspunt op te geven. Als de parameter Regel meerdere regels opgeeft, stelt de parameter Kolom een onderbrekingspunt in op de opgegeven kolom op elk van de opgegeven regels. PowerShell stopt met het uitvoeren van de instructie of expressie die het teken op de opgegeven regel- en kolompositie bevat.

Kolommen worden geteld vanaf de linkerbovenhoek, beginnend met kolomnummer 1 (niet 0). Als u een kolom opgeeft die niet in het script bestaat, wordt er geen fout gedeclareerd, maar wordt het onderbrekingspunt nooit uitgevoerd.

Type:Int32
Position:2
Default value:1
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Command

Hiermee stelt u een onderbrekingspunt voor opdrachten in. Voer cmdlet-namen in, zoals Get-Processof functienamen. Jokertekens zijn toegestaan.

De uitvoering stopt net voordat elk exemplaar van elke opdracht wordt uitgevoerd. Als de opdracht een functie is, stopt de uitvoering telkens wanneer de functie wordt aangeroepen en bij elke sectie BEGIN, PROCES en END.

Type:String[]
Aliassen:C
Position:Named
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:True

-Line

Hiermee stelt u een regeleindepunt in een script in. Voer een of meer regelnummers in, gescheiden door komma's. PowerShell stopt onmiddellijk voordat de instructie wordt uitgevoerd die op elk van de opgegeven regels begint.

Regels worden geteld vanaf de linkerbovenhoek van het scriptbestand vanaf regelnummer 1 (niet 0). Als u een lege regel opgeeft, stopt de uitvoering vóór de volgende niet-lege regel. Als de lijn buiten het bereik valt, wordt het onderbrekingspunt nooit bereikt.

Type:Int32[]
Position:1
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Mode

Hiermee geeft u de toegangsmodus op waarmee variabele onderbrekingspunten worden geactiveerd. De standaardwaarde is Write.

Deze parameter is alleen geldig wanneer de parameter Variabele wordt gebruikt in de opdracht. De modus is van toepassing op alle onderbrekingspunten die in de opdracht zijn ingesteld. De acceptabele waarden voor deze parameter zijn:

  • Write - Stopt de uitvoering direct voordat een nieuwe waarde naar de variabele wordt geschreven.
  • Lezen : de uitvoering wordt gestopt wanneer de variabele wordt gelezen, dat wil bijvoorbeeld wanneer de waarde wordt geopend, toegewezen, weergegeven of gebruikt. In de leesmodus stopt de uitvoering niet wanneer de waarde van de variabele verandert.
  • ReadWrite - Stopt de uitvoering wanneer de variabele wordt gelezen of geschreven.
Type:VariableAccessMode
Geaccepteerde waarden:Read, Write, ReadWrite
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Runspace

Hiermee geeft u de id van een Runspace-object op, zodat u kunt communiceren met onderbrekingspunten in de opgegeven runspace.

Deze parameter is toegevoegd in PowerShell 7.2.

Type:Runspace
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Script

Hiermee geeft u een matrix van scriptbestanden waarin met deze cmdlet een onderbrekingspunt wordt ingesteld. Voer de paden en bestandsnamen van een of meer scriptbestanden in. Als de bestanden zich in de huidige map bevinden, kunt u het pad weglaten. Jokertekens zijn toegestaan.

Variabele onderbrekingspunten en opdrachtonderbrekingspunten worden standaard ingesteld op elke opdracht die wordt uitgevoerd in de huidige sessie. Deze parameter is alleen vereist bij het instellen van een regeleindepunt.

Type:String[]
Position:0
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Variable

Hiermee geeft u een matrix van variabelen op waarop met deze cmdlet onderbrekingspunten worden ingesteld. Voer een door komma's gescheiden lijst met variabelen zonder dollartekens ($) in.

Gebruik de parameter Modus om de toegangsmodus te bepalen waarmee de onderbrekingspunten worden geactiveerd. De standaardmodus, Schrijven, stopt de uitvoering vlak voordat een nieuwe waarde naar de variabele wordt geschreven.

Type:String[]
Aliassen:V
Position:Named
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

Invoerwaarden

None

U kunt geen objecten doorsluisen naar deze cmdlet.

Uitvoerwaarden

CommandBreakpoint

LineBreakpoint

VariableBreakpoint

Set-PSBreakpoint retourneert een object dat elk onderbrekingspunt vertegenwoordigt dat wordt ingesteld.

Notities

PowerShell bevat de volgende aliassen voor Set-PSBreakpoint:

  • Alle platforms:

    • sbp
  • Set-PSBreakpoint kan geen onderbrekingspunt instellen op een externe computer. Als u fouten wilt opsporen in een script op een externe computer, kopieert u het script naar de lokale computer en voert u lokaal fouten in.

  • Wanneer u een onderbrekingspunt instelt op meer dan één regel, opdracht of variabele, Set-PSBreakpoint voor elke vermelding een onderbrekingspuntobject genereert.

  • Wanneer u een onderbrekingspunt instelt voor een functie of variabele bij de opdrachtprompt, kunt u het onderbrekingspunt instellen voor of nadat u de functie of variabele hebt gemaakt.