Sdílet prostřednictvím


Set-PSBreakpoint

Nastaví zarážku na řádku, příkazu nebo proměnné.

Syntaxe

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

Rutina Set-PSBreakpoint nastaví zarážku ve skriptu nebo v libovolném příkazu spuštěného v aktuální relaci. Zarážku můžete použít Set-PSBreakpoint k nastavení zarážky před spuštěním skriptu nebo spuštěním příkazu nebo při ladění, když se zastaví na jiné zarážce.

Set-PSBreakpoint Aplikace nemůže nastavit zarážku ve vzdáleném počítači. Pokud chcete ladit skript na vzdáleném počítači, zkopírujte skript do místního počítače a potom ho místně ladit.

Každý Set-PSBreakpoint příkaz vytvoří jeden z následujících tří typů zarážek:

  • Zarážka řádku – nastaví zarážky na konkrétní souřadnici řádku a sloupce.
  • Zarážka příkazů – nastaví zarážky u příkazů a funkcí.
  • Zarážka proměnné – nastaví zarážky na proměnných.

Zarážku můžete nastavit na více řádcích, příkazech nebo proměnných v jednom Set-PSBreakpoint příkazu, ale každý Set-PSBreakpoint příkaz nastaví jenom jeden typ zarážky.

PowerShell na zarážce dočasně zastaví provádění a dává řízení ladicímu programu. Příkazový řádek se změní na DBG\>a zpřístupní se sada příkazů ladicího programu pro použití. Pomocí parametru Akce však můžete zadat alternativní odpověď, například podmínky pro zarážku nebo pokyny k provádění dalších úloh, jako je protokolování nebo diagnostika.

Tato rutina Set-PSBreakpoint je jednou z několika rutin navržených pro ladění skriptů PowerShellu. Další informace o ladicím programu PowerShellu najdete v tématu about_Debuggers.

Příklady

Příklad 1: Nastavení zarážky na řádku

Tento příklad nastaví zarážku na řádku 5 ve skriptu Sample.ps1. Při spuštění skriptu se provádění zastaví bezprostředně před spuštěním řádku 5.

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

Když nastavíte novou zarážku podle čísla řádku, Set-PSBreakpoint rutina vygeneruje objekt zarážky řádku (System.Management.Automation.LineBreakpoint), který obsahuje ID zarážky a počet přístupů.

Příklad 2: Nastavení zarážky u funkce

Tento příklad vytvoří pro funkci v rutině Sample.ps1 zarážku Increment příkazu. Skript se zastaví bezprostředně před každým voláním zadané funkce.

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

Výsledkem je objekt zarážky příkazu. Před spuštěním skriptu je hodnota vlastnosti HitCount 0.

Příklad 3: Nastavení zarážky pro proměnnou

Tento příklad nastaví zarážku na proměnné serveru ve skriptu Sample.ps1. Používá parametr Mode s hodnotou ReadWrite k zastavení provádění, když je hodnota proměnné přečtena a těsně před změnou hodnoty.

Set-PSBreakpoint -Script "sample.ps1" -Variable "Server" -Mode ReadWrite

Příklad 4: Nastavení zarážky u každého příkazu, který začíná zadaným textem

Tento příklad nastaví zarážku pro každý příkaz ve skriptu Sample.ps1, který začíná na "write", například Write-Host.

Set-PSBreakpoint -Script Sample.ps1 -Command "write*"

Příklad 5: Nastavení zarážky v závislosti na hodnotě proměnné

Tento příklad zastaví provádění DiskTest funkce ve Test.ps1 skriptu pouze v případě, že hodnota $Disk proměnné je větší než 2.

Set-PSBreakpoint -Script "test.ps1" -Command "DiskTest" -Action { if ($Disk -gt 2) { break } }

Hodnota akce je blok skriptu, který testuje hodnotu $Disk proměnné ve funkci.

Akce pomocí klíčového break slova zastaví provádění, pokud je splněna podmínka. Alternativou (a výchozí) je Pokračovat.

Příklad 6: Nastavení zarážky u funkce

Tento příklad nastaví zarážku funkce CheckLog . Protože příkaz nezadá skript, zarážka je nastavena na cokoli, co běží v aktuální relaci. Ladicí program se přeruší při zavolání funkce, nikoli při deklaraci.

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'

Příklad 7: Nastavení zarážek na více řádcích

Tento příklad nastaví tři zarážky řádků ve skriptu Sample.ps1. Nastaví jednu zarážku ve sloupci 2 na každém řádku zadaném ve skriptu. Akce zadaná v parametru Akce se vztahuje na všechny zarážky.

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

Příklad 8: Nastavení zarážky v prostředí runspace

V tomto příkladu se spustí úloha. Runspace je uložen v proměnné a předán do Set-PSBreakPoint příkazu s parametrem Runspace .

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

$runspace = Get-Runspace -Id 1

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

Parametry

-Action

Určuje příkazy, které se spouští na každé zarážce místo přerušení. Zadejte blok skriptu, který obsahuje příkazy. Tento parametr můžete použít k nastavení podmíněných zarážek nebo k provádění jiných úloh, jako je testování nebo protokolování.

Pokud tento parametr vynecháte nebo není zadána žádná akce, spuštění se zastaví na zarážce a spustí se ladicí program.

Při použití parametru Akce se blok skriptu akce spustí na každé zarážce. Provádění se nezastaví, pokud blok skriptu neobsahuje klíčové slovo Break. Pokud v bloku skriptu použijete klíčové slovo Pokračovat, provádění se obnoví až do další zarážky.

Další informace najdete v tématu about_Script_Blocks, about_Break a about_Continue.

Typ:ScriptBlock
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Column

Určuje číslo sloupce sloupce v souboru skriptu, na kterém se provádění zastaví. Zadejte pouze jedno číslo sloupce. Výchozí hodnota je sloupec 1.

Hodnota Column se používá s hodnotou parametru Line k určení zarážky. Pokud parametr Řádek určuje více řádků, nastaví parametr Column zarážku na zadaný sloupec na každém ze zadaných řádků. PowerShell se zastaví před příkazem nebo výrazem, který obsahuje znak na zadané pozici řádku a sloupce.

Sloupce se počítají z levého horního okraje začínajícího číslem sloupce 1 (ne 0). Pokud zadáte sloupec, který ve skriptu neexistuje, není deklarována chyba, ale zarážka se nikdy nespustí.

Typ:Int32
Position:2
Default value:1
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Command

Nastaví zarážku příkazu. Zadejte názvy rutin, například Get-Processnázvy funkcí nebo názvy funkcí. Jsou povoleny zástupné cardy.

Provádění se zastaví těsně před spuštěním každé instance každého příkazu. Pokud je příkazem funkce, provádění se zastaví při každém volání funkce a v každé části BEGIN, PROCESS a END.

Typ:String[]
Aliasy:C
Position:Named
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:False
Přijmout zástupné znaky:True

-Line

Nastaví zarážku řádku ve skriptu. Zadejte jedno nebo více čísel řádků oddělených čárkami. PowerShell se okamžitě zastaví před spuštěním příkazu, který začíná na každém zadaném řádku.

Řádky se počítají z levého horního okraje souboru skriptu začínajícího číslem 1 (ne 0). Pokud zadáte prázdný řádek, provádění se zastaví před dalším neprázdným řádkem. Pokud je čára mimo rozsah, zarážka se nikdy nedorazí.

Typ:Int32[]
Position:1
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Mode

Určuje režim přístupu, který aktivuje proměnné zarážky. Výchozí hodnota je Write(Zapisovat).

Tento parametr je platný pouze v případě, že se v příkazu použije parametr Variable . Režim se vztahuje na všechny zarážky nastavené v příkazu. Tento parametr přijímá tyto hodnoty:

  • Zápis – zastaví provádění bezprostředně před zápisem nové hodnoty do proměnné.
  • Čtení – zastaví provádění při čtení proměnné, tj. při přístupu k jeho hodnotě, buď k přiřazení, zobrazení nebo použití. V režimu čtení se provádění nezastaví, když se změní hodnota proměnné.
  • ReadWrite – zastaví provádění při čtení nebo zápisu proměnné.
Typ:VariableAccessMode
Přípustné hodnoty:Read, Write, ReadWrite
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Runspace

Určuje ID objektu Runspace , abyste mohli pracovat se zarážky v zadaném prostředí runspace.

Tento parametr byl přidán v PowerShellu 7.2.

Typ:Runspace
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Script

Určuje pole souborů skriptu, ve které tato rutina nastaví zarážku. Zadejte cesty a názvy souborů jednoho nebo více skriptů. Pokud jsou soubory v aktuálním adresáři, můžete cestu vynechat. Jsou povoleny zástupné cardy.

Ve výchozím nastavení jsou zarážky proměnných a zarážky příkazů nastavené na libovolný příkaz, který se spouští v aktuální relaci. Tento parametr se vyžaduje pouze při nastavování zarážky řádku.

Typ:String[]
Position:0
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Variable

Určuje pole proměnných, na které tato rutina nastaví zarážky. Zadejte čárkami oddělený seznam proměnných bez znaků dolaru ($).

Pomocí parametru Mode určete režim přístupu, který aktivuje zarážky. Výchozí režim Write (Zapisovat) zastaví provádění těsně před zápisem nové hodnoty do proměnné.

Typ:String[]
Aliasy:V
Position:Named
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

Vstupy

None

Do této rutiny nemůžete roušit objekty.

Výstupy

CommandBreakpoint

LineBreakpoint

VariableBreakpoint

Set-PSBreakpoint vrátí objekt, který představuje každou zarážku, kterou nastaví.

Poznámky

PowerShell obsahuje následující aliasy pro Set-PSBreakpoint:

  • Všechny platformy:

    • sbp
  • Set-PSBreakpoint Aplikace nemůže nastavit zarážku ve vzdáleném počítači. Pokud chcete ladit skript na vzdáleném počítači, zkopírujte skript do místního počítače a potom ho místně ladit.

  • Když nastavíte zarážku na více než jeden řádek, příkaz nebo proměnnou, Set-PSBreakpoint vygeneruje objekt zarážky pro každou položku.

  • Při nastavování zarážky na funkci nebo proměnné na příkazovém řádku můžete zarážku nastavit před nebo po vytvoření funkce nebo proměnné.