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 Set-PSBreakpoint
de cmdlet wordt een onderbrekingspunt ingesteld in een script of in een opdracht die wordt uitgevoerd in de huidige sessie. U kunt Set-PSBreakpoint
een onderbrekingspunt instellen 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.
Met elke Set-PSBreakpoint
opdracht maakt u 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 wordt gewijzigd DBG\>
en er wordt een set foutopsporingsprogramma-opdrachten beschikbaar voor gebruik. U kunt echter de actieparameter 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_Debuggers voor meer informatie over het Foutopsporingsprogramma van PowerShell.
Voorbeelden
Voorbeeld 1: Een onderbrekingspunt instellen op een regel
In dit voorbeeld wordt een onderbrekingspunt ingesteld op regel 5 in het script Sample.ps1. 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 Set-PSBreakpoint
cmdlet 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 voor de Increment
functie 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 servervariabele in het script Sample.ps1. De parameter Mode wordt gebruikt met een waarde van ReadWrite om de uitvoering te stoppen wanneer de waarde van de variabele wordt gelezen en net voordat de waarde verandert.
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 script Sample.ps1 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 $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 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 script Sample.ps1. 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 actieparameter 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 Set-PSBreakPoint
opdracht 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 Actie 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_Break en about_Continue voor 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 Lijn 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-Process
functienamen 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[] |
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 Schrijven.
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 aanvaardbare waarden voor deze parameter zijn:
- Schrijven : stopt de uitvoering direct voordat een nieuwe waarde naar de variabele wordt geschreven.
- Lezen : hiermee stopt u 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 |
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
Set-PSBreakpoint
retourneert een object dat elk onderbrekingspunt vertegenwoordigt dat wordt ingesteld.
Notities
PowerShell bevat de volgende aliassen voor Set-PSBreakpoint
:
Alle platformen:
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
genereert u een onderbrekingspuntobject voor elke vermelding.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.