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 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 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 att 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 servervariabeln i skriptet Sample.ps1. 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 DiskTest av funktionen 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ä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 uppfylls. 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 för allt som körs i den aktuella sessionen. Felsökningsprogrammet avbryts 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

Det här exemplet anger tre radbrytningspunkter i Sample.ps1 skriptet. Den anger en brytpunkt i kolumn 2 på var och en av de rader som anges i skriptet. Den åtgärd 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 Break. 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 endast ett kolumnnummer. Standardvärdet är kolumn 1.

Värdet Kolumn 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 vid 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.

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 i varje begin-, PROCESS- och END-avsnitt.

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änstermarginalen i skriptfilen som börjar med rad nummer 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 nås aldrig brytpunkten.

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

-Mode

Anger åtkomstläget 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äsa – stoppar körningen när variabeln läse, det vill sa, 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 denna cmdlet 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 kommando brytpunkter på alla kommandon som körs i den aktuella sessionen. Den här parametern krävs bara 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 denna cmdlet anger brytpunkter på. Ange en kommaavgränsad lista med variabler utan dollartecken ($).

Använd parametern Mode för att fastställa åtkomstläget 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

CommandBreakpoint

LineBreakpoint

VariableBreakpoint

Set-PSBreakpoint returnerar ett objekt som representerar varje brytpunkt som den anger.

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 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.