Weboldal keresés

Set-PSBreakpoint (Microsoft.PowerShell.Utility)


Set-PSBreakpoint

Modul:
Microsoft.PowerShell.Utility

Töréspontot állít be egy soron, parancson vagy változón.

Szintaxis

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

Leírás

A Set-PSBreakpoint parancsmag töréspontot állít be egy szkriptben vagy bármely, az aktuális munkamenetben futtatott parancsban. A Set-PSBreakpoint használatával töréspontot állíthat be egy parancsfájl végrehajtása vagy egy parancs futtatása előtt, vagy hibakeresés közben, amikor egy másik törésponton leáll.

A Set-PSBreakpoint nem tud töréspontot beállítani távoli számítógépen. Egy távoli számítógépen lévő szkript hibakereséséhez másolja a szkriptet a helyi számítógépre, majd helyileg végezze el a hibakeresést.

Minden Set-PSBreakpoint parancs a következő három törésponttípus egyikét hozza létre:

  • Vonaltöréspont - Meghatározott vonal- és oszlopkoordinátákon töréspontokat állít be.
  • Parancs töréspontja - töréspontokat állít be a parancsokhoz és függvényekhez.
  • Változó töréspontja - töréspontokat állít be a változókhoz.

Egyetlen Set-PSBreakpoint parancsban több soron, parancson vagy változón is beállíthat töréspontot, de minden Set-PSBreakpoint parancs csak egy típusú töréspontot állít be.

Egy törésponton a PowerShell ideiglenesen leállítja a végrehajtást, és átadja a vezérlést a hibakeresőnek. A parancssor a következőre változik: DBG\>, és egy sor hibakereső parancs elérhetővé válik. Az Action paraméter segítségével azonban megadhat egy alternatív választ, például a töréspont feltételeit vagy utasításokat további feladatok, például naplózás vagy diagnosztika végrehajtásához.

A Set-PSBreakpoint parancsmag egyike a PowerShell-szkriptek hibakeresésére tervezett parancsmagoknak. A PowerShell hibakeresővel kapcsolatos további információkért lásd: about_Debuggers.

Példák

1. példa: Állítson be egy töréspontot egy vonalon

Ez a példa egy töréspontot állít be a Sample.ps1 szkript 5. sorában. Amikor a szkript fut, a végrehajtás közvetlenül az 5. sor végrehajtása előtt leáll.

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

Ha új töréspontot állít be sorszám alapján, a Set-PSBreakpoint parancsmag létrehoz egy sortöréspont objektumot (System.Management.Automation.LineBreakpoint), amely tartalmazza a töréspont azonosítóját és a találatot. gróf.

2. példa: Állítson be egy töréspontot egy függvényen

Ez a példa parancstöréspontot hoz létre a Sample.ps1 parancsmag Increment függvényében. A parancsfájl végrehajtása közvetlenül a megadott függvény minden egyes hívása előtt leáll.

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

Az eredmény egy parancstöréspont objektum. A szkript futása előtt a HitCount tulajdonság értéke 0.

3. példa: Állítson be töréspontot egy változón

Ez a példa töréspontot állít be a Sample.ps1 szkript Server változóján. A Mode paramétert használja ReadWrite értékkel, hogy leállítsa a végrehajtást a változó értékének beolvasásakor és közvetlenül az érték változása előtt.

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

4. példa: Állítson be töréspontot minden parancshoz, amely meghatározott szöveggel kezdődik

Ez a példa beállít egy töréspontot a Sample.ps1 szkript minden olyan parancsához, amely "write"-vel kezdődik, például Write-Host.

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

5. példa: Állítson be egy töréspontot egy változó értékétől függően

Ez a példa csak akkor állítja le a végrehajtást a DiskTest függvénynél a Test.ps1 szkriptben, ha a $Disk változó értéke nagyobb, mint 2.

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

Az Action értéke egy szkriptblokk, amely a függvényben lévő $Disk változó értékét teszteli.

A művelet a break kulcsszót használja a végrehajtás leállításához, ha a feltétel teljesül. Az alternatíva (és az alapértelmezett) a Folytatás.

6. példa: Állítson be egy töréspontot egy függvényen

Ez a példa töréspontot állít be a CheckLog függvényben. Mivel a parancs nem ad meg parancsfájlt, a töréspontot mindenre beállítja, ami az aktuális munkamenetben fut. A hibakereső akkor szakad meg, amikor a függvény hívódik, nem pedig a deklaráláskor.

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'

7. példa: Állítson be töréspontokat több sorban

Ez a példa három sortöréspontot állít be a Sample.ps1 szkriptben. Egy töréspontot állít be a 2. oszlopban a szkriptben megadott sorok mindegyikén. Az Action paraméterben megadott művelet minden töréspontra vonatkozik.

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

8. példa: Állítson be egy töréspontot egy futási területen

Ebben a példában egy feladat elindul. A futási területet a rendszer egy változóban tárolja, és átadja a Set-PSBreakPoint parancsnak a Runspace paraméterrel.

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

$runspace = Get-Runspace -Id 1

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

Paraméterek

-Action

Meghatározza azokat a parancsokat, amelyek minden törésponton futnak törés helyett. Adjon meg egy parancsfájl blokkot, amely tartalmazza a parancsokat. Ezzel a paraméterrel feltételes töréspontokat állíthat be, vagy más feladatokat hajthat végre, például tesztelést vagy naplózást.

Ha ez a paraméter kimarad, vagy nincs megadva művelet, a végrehajtás leáll a törésponton, és elindul a hibakereső.

Ha az Action paramétert használja, az Action script blokk minden törésponton lefut. A végrehajtás csak akkor áll le, ha a szkriptblokk tartalmazza a Break kulcsszót. Ha a Continue kulcsszót használja a parancsfájlblokkban, a végrehajtás a következő töréspontig folytatódik.

További információért lásd: about_Script_Blocks, about_Break és about_Continue.

Típus:

ScriptBlock

Pozíció:

Elnevezett

Alapértelmezett érték:

None

Kívánt:

False

Csővezeték bevitel elfogadása:

False

Helyettesítő karakterek elfogadása:

False

-Column

Megadja a parancsfájl azon oszlopának oszlopszámát, amelyen a végrehajtás leáll. Csak egy oszlopszámot írjon be. Az alapértelmezett az 1. oszlop.

Az Oszlop érték a Vonal paraméter értékével együtt használatos a töréspont megadásához. Ha a Line paraméter több sort ad meg, az Oszlop paraméter beállít egy töréspontot az egyes sorok megadott oszlopában. A PowerShell leállítja a végrehajtást a megadott sor- és oszloppozícióban szereplő karaktert tartalmazó utasítás vagy kifejezés előtt.

Az oszlopok számolása a bal felső margótól kezdődően az 1. oszloppal kezdődik (nem 0). Ha olyan oszlopot ad meg, amely nem létezik a szkriptben, a rendszer nem deklarál hibát, de a töréspont soha nem kerül végrehajtásra.

Típus:

Int32

Pozíció:

2

Alapértelmezett érték:

1

Kívánt:

False

Csővezeték bevitel elfogadása:

False

Helyettesítő karakterek elfogadása:

False

-Command

Parancstöréspontot állít be. Adjon meg parancsmagneveket, például Get-Process vagy függvényneveket. Helyettesítő karakterek megengedettek.

A végrehajtás közvetlenül az egyes parancsok minden példányának végrehajtása előtt áll le. Ha a parancs egy függvény, a végrehajtás leáll minden alkalommal, amikor a függvényt meghívják, és minden BEGIN, PROCESS és END szakaszban leáll.

Típus:

String[]

Álnevek:

C

Pozíció:

Elnevezett

Alapértelmezett érték:

None

Kívánt:

True

Csővezeték bevitel elfogadása:

False

Helyettesítő karakterek elfogadása:

True

-Line

Sortöréspontot állít be a szkriptben. Adjon meg egy vagy több sorszámot, vesszővel elválasztva. A PowerShell közvetlenül a megadott sorokon kezdődő utasítás végrehajtása előtt leáll.

A sorokat a szkriptfájl bal felső margójától számítja a program, amely az 1-es sorszámmal kezdődik (nem 0). Ha üres sort ad meg, a végrehajtás leáll a következő nem üres sor előtt. Ha a vonal tartományon kívül esik, a töréspontot soha nem éri el.

Típus:

Int32[]

Pozíció:

1

Alapértelmezett érték:

None

Kívánt:

True

Csővezeték bevitel elfogadása:

False

Helyettesítő karakterek elfogadása:

False

-Mode

Meghatározza a hozzáférési módot, amely változó töréspontokat vált ki. Az alapértelmezett az Írás.

Ez a paraméter csak akkor érvényes, ha a parancsban a Változó paraméter szerepel. A mód a parancsban beállított összes töréspontra vonatkozik. Ennek a paraméternek az elfogadható értékei:

  • Írás - Közvetlenül leállítja a végrehajtást, mielőtt új értéket írna a változóba.
  • Olvasás - Leállítja a végrehajtást a változó beolvasásakor, azaz amikor hozzáférnek az értékéhez, hozzárendelésre, megjelenítésre vagy felhasználásra. Olvasási módban a végrehajtás nem áll le, ha a változó értéke megváltozik.
  • ReadWrite - Leállítja a végrehajtást, amikor a változót olvassák vagy írják.
Típus:

VariableAccessMode

Elfogadott értékek:

Olvass, Írj, Olvass Írj

Pozíció:

Elnevezett

Alapértelmezett érték:

None

Kívánt:

False

Csővezeték bevitel elfogadása:

False

Helyettesítő karakterek elfogadása:

False

-Runspace

Megadja egy Runspace objektum azonosítóját, hogy interakcióba léphessen a megadott futási területen lévő töréspontokkal.

Ezt a paramétert a PowerShell 7.2-ben adták hozzá.

Típus:

Runspace

Pozíció:

Elnevezett

Alapértelmezett érték:

None

Kívánt:

False

Csővezeték bevitel elfogadása:

False

Helyettesítő karakterek elfogadása:

False

-Script

Megadja a parancsfájlok azon tömbjét, amelyben ez a parancsmag töréspontot állít be. Adja meg egy vagy több parancsfájl elérési útját és fájlnevét. Ha a fájlok az aktuális könyvtárban vannak, elhagyhatja az elérési utat. Helyettesítő karakterek megengedettek.

Alapértelmezés szerint a változó töréspontok és a parancsok töréspontjai az aktuális munkamenetben futó bármely parancsnál be vannak állítva. Ez a paraméter csak vonaltöréspont beállításakor szükséges.

Típus:

String[]

Pozíció:

0

Alapértelmezett érték:

None

Kívánt:

False

Csővezeték bevitel elfogadása:

False

Helyettesítő karakterek elfogadása:

False

-Variable

Változótömböt ad meg, amelyre ez a parancsmag töréspontokat állít be. Adja meg a változók vesszővel elválasztott listáját dollárjelek nélkül ($).

Használja a Mode paramétert a töréspontokat kiváltó hozzáférési mód meghatározásához. Az alapértelmezett mód, a Write, leállítja a végrehajtást közvetlenül azelőtt, hogy új értéket írna a változóba.

Típus:

String[]

Álnevek:

V

Pozíció:

Elnevezett

Alapértelmezett érték:

None

Kívánt:

True

Csővezeték bevitel elfogadása:

False

Helyettesítő karakterek elfogadása:

False

Bemenetek

Nincs

Ehhez a parancsmaghoz nem lehet objektumokat vezetni.

Kimenetek

CommandBreakpoint

LineBreakpoint

VariableBreakpoint

A Set-PSBreakpoint egy objektumot ad vissza, amely minden beállított töréspontot képvisel.

Megjegyzések

A PowerShell a következő álneveket tartalmazza a Set-PSBreakpoint számára:

  • Minden platform:

      sbp
  • A Set-PSBreakpoint nem tud töréspontot beállítani távoli számítógépen. Egy távoli számítógépen lévő szkript hibakereséséhez másolja a szkriptet a helyi számítógépre, majd helyileg végezze el a hibakeresést.

  • Ha egynél több sorban, parancsban vagy változóban állít be töréspontot, a Set-PSBreakpoint minden bejegyzéshez létrehoz egy töréspont objektumot.

  • Ha töréspontot állít be egy függvényen vagy változón a parancssorban, beállíthatja a töréspontot a függvény vagy változó létrehozása előtt vagy után.

Kapcsolódó cikkek