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 en 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 vid 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ökaren. 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

Det här exemplet anger en brytpunkt på rad 5 i Sample.ps1 skriptet. 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 radbrytningspunktsobjekt (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 Increment funktionen 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

Det här exemplet anger en brytpunkt för servervariabeln 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

Det här exemplet anger en brytpunkt för varje kommando i Sample.ps1 skriptet 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 DiskTest av funktionen i Test.ps1-skriptet 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ärden ä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 är uppfyllt. Alternativet (och standardinställningen) är Fortsätt.

Exempel 6: Ange en brytpunkt för en funktion

I det här exemplet anges en brytpunkt för CheckLog funktionen. 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 radbrytningspunkter i Sample.ps1-skriptet. 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 bryta. 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_Break och about_Continue.

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 Rad för att ange brytpunkten. Om parametern Rad anger flera rader anger parametern Kolumn 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änstra marginalen 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.

Type:Int32
Position:2
Default value:1
Required:False
Accept pipeline input:False
Accept wildcard characters: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 avsnitt för BEGIN, PROCESS och END.

Type:String[]
Aliases:C
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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 ligger inom intervallet nås aldrig brytpunkten.

Type:Int32[]
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Mode

Anger det läge för åtkomst som utlöser variabel brytpunkter. Standardvärdet är Skriv.

Den här parametern är endast giltig när variabelparametern används i kommandot . Läget gäller för alla brytpunkter som anges i kommandot . De acceptabla värdena för den här parametern är:

  • Skriv – Stoppar körningen omedelbart innan ett nytt värde skrivs till variabeln.
  • Läs – Stoppar körningen när variabeln läse, det villa är när dess värde nås, antingen för att tilldelas, visas eller användas. 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.
Type:VariableAccessMode
Accepted values:Read, Write, ReadWrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

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

-Variable

Anger en matris med variabler som den här cmdleten anger brytpunkter på. Ange en kommaavgränsad lista över variabler utan dollartecken ($).

Använd parametern Läge 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.

Type:String[]
Aliases:V
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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, kommando eller variabel Set-PSBreakpoint genererar ett brytpunktsobjekt för varje post.
  • När du ställer in en brytpunkt för en funktion eller variabel i kommandotolken kan du ange brytpunkten före eller efter att du har skapat funktionen eller variabeln.