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-Process
ná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
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é.