Set-PSBreakpoint
Anger en brytpunkt på en rad, ett kommando eller en variabel.
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
Cmdleten Set-PSBreakpoint
anger en brytpunkt i ett skript eller i någon kommandokörning i den aktuella sessionen. Du kan använda Set-PSBreakpoint
för att ange en brytpunkt innan du kör ett skript eller kör ett kommando, eller under felsökning, när den stoppas vid en annan brytpunkt.
Set-PSBreakpoint
kan inte ange en brytpunkt på en fjärrdator. Om du vill felsöka ett skript på en fjärrdator kopierar du skriptet till den lokala datorn och felsöker det sedan lokalt.
Varje Set-PSBreakpoint
kommando skapar en av följande tre typer av brytpunkter:
- Radbrytningspunkt – Anger brytpunkter vid specifika linje- och kolumnkoordinater.
- Kommandobrytpunkt – Anger brytpunkter för kommandon och funktioner.
- Variabel brytpunkt – Anger brytpunkter för variabler.
Du kan ange en brytpunkt på flera rader, kommandon eller variabler i ett enda Set-PSBreakpoint
kommando, men varje Set-PSBreakpoint
kommando anger bara en typ av brytpunkt.
Vid en brytpunkt slutar PowerShell tillfälligt att köra och ger kontroll till felsökningsprogrammet. Kommandotolken ändras till DBG\>
och en uppsättning felsökningskommandon blir tillgängliga för användning. Du kan dock använda parametern Åtgärd för att ange ett alternativt svar, till exempel villkor för brytpunkten eller instruktioner för att utföra ytterligare uppgifter, till exempel loggning eller diagnostik.
Cmdleten Set-PSBreakpoint
är en av flera cmdletar som är utformade för felsökning av PowerShell-skript.
Mer information om PowerShell-felsökningsprogrammet finns i about_Debuggers.
Exempel
Exempel 1: Ange en brytpunkt på en rad
I det här exemplet anges en brytpunkt på rad 5 i skriptet Sample.ps1. När skriptet körs stoppas körningen omedelbart innan rad 5 körs.
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
När du anger en ny brytpunkt efter radnummer genererar cmdleten Set-PSBreakpoint
ett radbrytningspunktobjekt (System.Management.Automation.LineBreakpoint) som innehåller brytpunkts-ID och antal träffar.
Exempel 2: Ange en brytpunkt för en funktion
I det här exemplet skapas en kommandobrytpunkt för funktionen Increment
i cmdleten Sample.ps1. Skriptet slutar köras omedelbart före varje anrop till den angivna funktionen.
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
Resultatet är ett kommandobrytpunktsobjekt. Innan skriptet körs är värdet för egenskapen HitCount 0.
Exempel 3: Ange en brytpunkt för en variabel
I det här exemplet anges en brytpunkt för variabeln Server i Sample.ps1-skriptet. Den använder parametern Mode med värdet ReadWrite för att stoppa körningen när värdet för variabeln läse och precis innan värdet ändras.
Set-PSBreakpoint -Script "sample.ps1" -Variable "Server" -Mode ReadWrite
Exempel 4: Ange en brytpunkt för varje kommando som börjar med angiven text
I det här exemplet anges en brytpunkt för varje kommando i skriptet Sample.ps1 som börjar med "write", till exempel Write-Host
.
Set-PSBreakpoint -Script Sample.ps1 -Command "write*"
Exempel 5: Ange en brytpunkt beroende på värdet för en variabel
Det här exemplet stoppar körningen vid funktionen DiskTest
i skriptet Test.ps1 endast när värdet för variabeln $Disk
är större än 2.
Set-PSBreakpoint -Script "test.ps1" -Command "DiskTest" -Action { if ($Disk -gt 2) { break } }
Värdet för Åtgärd är ett skriptblock som testar värdet för variabeln $Disk
i funktionen.
Åtgärden använder nyckelordet break
för att stoppa körningen om villkoret uppfylls. Alternativet (och standardvärdet) är Fortsätt.
Exempel 6: Ange en brytpunkt för en funktion
I det här exemplet anges en brytpunkt för funktionen CheckLog
. Eftersom kommandot inte anger något skript anges brytpunkten på allt som körs i den aktuella sessionen. Felsökningsprogrammet bryts när funktionen anropas, inte när den deklareras.
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'
Exempel 7: Ange brytpunkter på flera rader
I det här exemplet anges tre radbrytningar i skriptet Sample.ps1. Den anger en brytpunkt i kolumn 2 på var och en av de rader som anges i skriptet. Åtgärden som anges i parametern Åtgärd gäller för alla brytpunkter.
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
Parametrar
-Action
Anger kommandon som körs vid varje brytpunkt i stället för att brytas. Ange ett skriptblock som innehåller kommandona. Du kan använda den här parametern för att ange villkorsstyrda brytpunkter eller utföra andra uppgifter, till exempel testning eller loggning.
Om den här parametern utelämnas, eller om ingen åtgärd har angetts, stoppas körningen vid brytpunkten och felsökningsprogrammet startar.
När parametern Åtgärd används körs åtgärdsskriptblocket vid varje brytpunkt. Körningen stoppas inte om inte skriptblocket innehåller nyckelordet Bryt. Om du använder nyckelordet Fortsätt i skriptblocket återupptas körningen till nästa brytpunkt.
Mer information finns i about_Script_Blocks, about_Breakoch about_Continue.
Typ: | ScriptBlock |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Column
Anger kolumnnumret för kolumnen i skriptfilen där körningen stoppas. Ange bara ett kolumnnummer. Standardvärdet är kolumn 1.
Kolumnvärdet används med värdet för parametern Line för att ange brytpunkten. Om parametern Line anger flera rader anger parametern Column en brytpunkt i den angivna kolumnen på var och en av de angivna raderna. PowerShell slutar köra före instruktionen eller uttrycket som innehåller tecknet på den angivna rad- och kolumnpositionen.
Kolumner räknas från den övre vänstermarginalen som börjar med kolumnnummer 1 (inte 0). Om du anger en kolumn som inte finns i skriptet deklareras inget fel, men brytpunkten körs aldrig.
Typ: | Int32 |
Position: | 2 |
Standardvärde: | 1 |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Command
Anger en kommandobrytpunkt. Ange cmdlet-namn, till exempel Get-Process
eller funktionsnamn. Jokertecken tillåts.
Körningen stoppas precis innan varje instans av varje kommando körs. Om kommandot är en funktion stoppas körningen varje gång funktionen anropas och vid varje begin-, PROCESS- och END-avsnitt.
Typ: | String[] |
Alias: | C |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | True |
-Line
Anger en radbrytningspunkt i ett skript. Ange ett eller flera radnummer avgränsade med kommatecken. PowerShell stoppas omedelbart innan instruktionen som börjar på var och en av de angivna raderna körs.
Rader räknas från den övre vänstra marginalen i skriptfilen som börjar med radnummer 1 (inte 0). Om du anger en tom rad stoppas körningen före nästa icke-tomma rad. Om linjen är utom räckhåll, slås brytpunkten aldrig.
Typ: | Int32[] |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Mode
Anger det läge för åtkomst som utlöser variabel brytpunkter. Standardvärdet är Write.
Den här parametern är endast giltig när parametern Variable används i kommandot . Läget gäller för alla brytpunkter som anges i kommandot . De godtagbara värdena för den här parametern är:
- Write – Stoppar körningen omedelbart innan ett nytt värde skrivs till variabeln.
- Read – Stoppar körningen när variabeln läss, det vill s. v.s. när dess värde används, antingen tilldelas, visas eller används. I läsläge stoppas inte körningen när värdet för variabeln ändras.
- ReadWrite – Stoppar körningen när variabeln läs- eller skrivs.
Typ: | VariableAccessMode |
Godkända värden: | Read, Write, ReadWrite |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Script
Anger en matris med skriptfiler som den här cmdleten anger en brytpunkt i. Ange sökvägar och filnamn för en eller flera skriptfiler. Om filerna finns i den aktuella katalogen kan du utelämna sökvägen. Jokertecken tillåts.
Som standard anges variabel brytpunkter och kommandobrytpunkter på alla kommandon som körs i den aktuella sessionen. Den här parametern krävs endast när du anger en radbrytningspunkt.
Typ: | String[] |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Variable
Anger en matris med variabler som den här cmdleten anger brytpunkter på. Ange en kommaavgränsad lista med variabler utan dollartecken ($
).
Använd parametern Mode för att fastställa vilket åtkomstläge som utlöser brytpunkterna. Standardläget Skriv stoppar körningen precis innan ett nytt värde skrivs till variabeln.
Typ: | String[] |
Alias: | V |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
None
Du kan inte skicka indata till Set-PSBreakpoint
.
Utdata
Breakpoint object (System.Management.Automation.LineBreakpoint, System.Management.Automation.VariableBreakpoint, System.Management.Automation.CommandBreakpoint)
Set-PSBreakpoint
returnerar ett objekt som representerar varje brytpunkt som anges.
Kommentarer
-
Set-PSBreakpoint
kan inte ange en brytpunkt på en fjärrdator. Om du vill felsöka ett skript på en fjärrdator kopierar du skriptet till den lokala datorn och felsöker det sedan lokalt. - När du anger en brytpunkt på mer än en rad, ett kommando eller en variabel genererar
Set-PSBreakpoint
ett brytpunktsobjekt för varje post. - När du ställer in en brytpunkt på en funktion eller variabel i kommandotolken kan du ange brytpunkten före eller efter att du har skapat funktionen eller variabeln.