Set-PSBreakpoint

Anger en brytpunkt på en rad, ett kommando eller en variabel.

Syntax

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

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 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 standardvärdet) ä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 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

Exempel 8: Ange en brytpunkt i ett runspace

I det här exemplet startas ett jobb. Runspace lagras i en variabel och skickas Set-PSBreakPoint till kommandot med parametern Runspace .

Start-Job -ScriptBlock {
    Start-Sleep -Seconds 10
}

$runspace = Get-Runspace -Id 1

Set-PSBreakpoint -Command Start-Sleep -Runspace $runspace

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

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

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

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:

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

-Runspace

Anger ID för ett Runspace-objekt så att du kan interagera med brytpunkter i det angivna körningsutrymmet.

Den här parametern lades till i PowerShell 7.2.

Type:Runspace
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 med variabler utan dollartecken ($).

Använd parametern Läge för att fastställa läget för åtkomst 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 objekt till den här cmdleten.

Utdata

CommandBreakpoint

LineBreakpoint

VariableBreakpoint

Set-PSBreakpoint returnerar ett objekt som representerar varje brytpunkt som anges.

Kommentarer

PowerShell innehåller följande alias för Set-PSBreakpoint:

  • Alla plattformar:

    • sbp
  • 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 på en funktion eller variabel i kommandotolken kan du ange brytpunkten före eller efter att du har skapat funktionen eller variabeln.