Delen via


Set-PSBreakpoint

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

Syntax

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

Met de Set-PSBreakpoint cmdlet wordt een onderbrekingspunt ingesteld in een script of in een opdracht die in de huidige sessie wordt uitgevoerd. U kunt gebruiken Set-PSBreakpoint om een onderbrekingspunt in te stellen voordat u een script uitvoert of een opdracht uitvoert, of tijdens foutopsporing, wanneer deze wordt 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 maakt u vervolgens lokaal fouten op.

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 worden onderbrekingspunten ingesteld voor opdrachten en functies.
  • Variabel 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 met elke Set-PSBreakpoint opdracht wordt slechts één type onderbrekingspunt ingesteld.

Bij een onderbrekingspunt stopt PowerShell tijdelijk met uitvoeren en krijgt het foutopsporingsprogramma de controle. De opdrachtprompt wordt gewijzigd in DBG\>en er wordt een set opdrachten voor het foutopsporingsprogramma 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 aanvullende taken, zoals logboekregistratie of diagnostische gegevens.

De Set-PSBreakpoint cmdlet is een van de verschillende cmdlets die zijn ontworpen voor foutopsporing in PowerShell-scripts. Zie about_Debuggers voor 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 direct 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 per regelnummer instelt, genereert de Set-PSBreakpoint cmdlet een regelonderbrekingspuntobject (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 opdrachtonderbrekingspunt voor de Increment functie gemaakt in de cmdlet Sample.ps1. Het script stopt met uitvoeren direct voor elke aanroep van de opgegeven functie.

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. De parameter Mode met de waarde ReadWrite wordt gebruikt 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 op basis 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 $Disk variabele groter is dan 2.

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

De waarde van de actie 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 Doorgaan.

Voorbeeld 6: Een onderbrekingspunt instellen voor een functie

In dit voorbeeld wordt een onderbrekingspunt voor de CheckLog functie ingesteld. Omdat de opdracht geen script opgeeft, wordt het onderbrekingspunt ingesteld op alles wat in de huidige sessie wordt uitgevoerd. Het foutopsporingsprogramma wordt onderbroken 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 Actie 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

Parameters

-Action

Hiermee geeft u opdrachten op die worden uitgevoerd op elk onderbrekingspunt in plaats van op 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 als er geen actie is opgegeven, stopt de uitvoering bij het onderbrekingspunt en wordt het foutopsporingsprogramma gestart.

Wanneer de parameter Action wordt gebruikt, wordt het actiescriptblok uitgevoerd op elk onderbrekingspunt. De uitvoering wordt niet gestopt, tenzij het scriptblok het trefwoord Break bevat. Als u het trefwoord Doorgaan in het scriptblok gebruikt, wordt de uitvoering hervat tot het volgende onderbrekingspunt.

Zie about_Script_Blocks, about_Break en about_Continue voor meer informatie.

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Column

Hiermee geeft u het kolomnummer op 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 Line om het onderbrekingspunt op te geven. Als de parameter Line meerdere regels opgeeft, stelt de parameter Kolom een onderbrekingspunt in op de opgegeven kolom op elk van de opgegeven regels. PowerShell stopt met uitvoeren vóór de instructie of expressie die het teken bevat op de opgegeven regel- en kolompositie.

Kolommen worden geteld vanaf de linkerbovenhoek vanaf 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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Command

Hiermee stelt u een onderbrekingspunt voor de opdracht in. Voer cmdletnamen in, zoals Get-Process, of 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[]
Aliases:C
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-Line

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

Regels worden geteld vanaf de linkerbovenhoek van het scriptbestand, beginnend met 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
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Mode

Hiermee geeft u de toegangsmodus op die variabele onderbrekingspunten activeert. De standaardwaarde is Schrijven.

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

  • Schrijven : stopt de uitvoering direct voordat een nieuwe waarde naar de variabele wordt geschreven.
  • Lezen : stopt de uitvoering wanneer de variabele wordt gelezen, dat wil gezegd, wanneer de waarde wordt geopend, die moet worden 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
Accepted values:Read, Write, ReadWrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Script

Hiermee geeft u een matrix met scriptbestanden op waarin deze cmdlet een onderbrekingspunt instelt. 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.

Standaard worden variabele onderbrekingspunten en opdrachtonderbrekingspunten ingesteld voor elke opdracht die wordt uitgevoerd in de huidige sessie. Deze parameter is alleen vereist bij het instellen van een regelonderbrekingspunt.

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Variable

Hiermee geeft u een matrix met variabelen waarvoor deze cmdlet onderbrekingspunten instelt. Voer een door komma's gescheiden lijst met variabelen in zonder dollartekens ($).

Gebruik de parameter Mode om de toegangsmodus te bepalen die de onderbrekingspunten activeert. De standaardmodus, Schrijven, stopt de uitvoering vlak voordat een nieuwe waarde naar de variabele wordt geschreven.

Type:String[]
Aliases:V
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Invoerwaarden

None

U kunt invoer niet doorspezen naar Set-PSBreakpoint.

Uitvoerwaarden

Breakpoint object (System.Management.Automation.LineBreakpoint, System.Management.Automation.VariableBreakpoint, System.Management.Automation.CommandBreakpoint)

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

Notities

  • 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 maakt u vervolgens lokaal fouten op.
  • Wanneer u een onderbrekingspunt instelt op meer dan één regel, opdracht of variabele, Set-PSBreakpoint wordt voor elke vermelding een onderbrekingspuntobject gegenereerd.
  • 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.