Set-PSBreakpoint
Nastaví zarážku na řádku, příkazu nebo proměnné.
Syntaxe
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
Rutina Set-PSBreakpoint
nastaví zarážku ve skriptu nebo v libovolném příkazu spuštěného v aktuální relaci. Pomocí Set-PSBreakpoint
můžete nastavit zarážku 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
nelze 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ý příkaz Set-PSBreakpoint
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 příkazu Set-PSBreakpoint
, ale každý příkaz Set-PSBreakpoint
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 sada příkazů ladicího programu se zpřístupní pro použití. Pomocí parametru Akce však můžete zadat alternativní odpověď, například podmínky zarážky nebo pokyny k provádění dalších úloh, jako je protokolování nebo diagnostika.
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ří zarážku příkazu ve funkci Increment
v rutině Sample.ps1. 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é Server ve skriptu Sample.ps1. Používá parametr Mode s hodnotou ReadWrite k zastavení provádění při čtení hodnoty proměnné 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í funkce DiskTest
ve skriptu Test.ps1 pouze v případě, že hodnota proměnné $Disk
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 proměnné $Disk
ve funkci.
Akce používá klíčové slovo break
k zastavení provádění, pokud je podmínka splněna. Alternativou (a výchozí) je Pokračovat.
Příklad 6: Nastavení zarážky u funkce
Tento příklad nastaví zarážku na funkci 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 Action platí pro 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
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 naleznete v tématu about_Script_Blocks, about_Breaka 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 řádku určuje více řádků, nastaví parametr Sloupec 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-Process
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 zápisu.
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. Přijatelné hodnoty pro tento parametr jsou:
- Zápis – zastaví provádění bezprostředně před zápisem nové hodnoty do proměnné.
- read – 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 |
-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
Vstup do Set-PSBreakpoint
nelze převést .
Výstupy
Breakpoint object (System.Management.Automation.LineBreakpoint, System.Management.Automation.VariableBreakpoint, System.Management.Automation.CommandBreakpoint)
Set-PSBreakpoint
vrátí objekt, který představuje každou zarážku, kterou nastaví.
Poznámky
-
Set-PSBreakpoint
nelze 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é.