Udostępnij za pośrednictwem


Set-PSBreakpoint

Ustawia punkt przerwania w wierszu, poleceniu lub zmiennej.

Składnia

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

Opis

Polecenie Set-PSBreakpoint cmdlet ustawia punkt przerwania w skrycie lub w dowolnym poleceniu uruchamianym w bieżącej sesji. Można użyć Set-PSBreakpoint polecenia , aby ustawić punkt przerwania przed wykonaniem skryptu lub uruchomieniem polecenia lub podczas debugowania po zatrzymaniu w innym punkcie przerwania.

Set-PSBreakpoint program nie może ustawić punktu przerwania na komputerze zdalnym. Aby debugować skrypt na komputerze zdalnym, skopiuj skrypt na komputer lokalny, a następnie debuguj go lokalnie.

Każde Set-PSBreakpoint polecenie tworzy jeden z następujących trzech typów punktów przerwania:

  • Punkt przerwania wiersza — ustawia punkty przerwania na określonych współrzędnych wiersza i kolumny.
  • Punkt przerwania poleceń — ustawia punkty przerwania dla poleceń i funkcji.
  • Punkt przerwania zmiennej — ustawia punkty przerwania dla zmiennych.

Punkt przerwania można ustawić w wielu wierszach, poleceniach lub zmiennych w jednym Set-PSBreakpoint poleceniu, ale każde Set-PSBreakpoint polecenie ustawia tylko jeden typ punktu przerwania.

W punkcie przerwania program PowerShell tymczasowo zatrzymuje wykonywanie i daje kontrolę debugerowi. Wiersz polecenia zmienia się na DBG\>, a zestaw poleceń debugera staje się dostępny do użycia. Można jednak użyć parametru Akcja , aby określić alternatywną odpowiedź, taką jak warunki punktu przerwania lub instrukcje wykonywania dodatkowych zadań, takich jak rejestrowanie lub diagnostyka.

Polecenie Set-PSBreakpoint cmdlet to jedno z kilku poleceń cmdlet przeznaczonych do debugowania skryptów programu PowerShell. Aby uzyskać więcej informacji na temat debugera programu PowerShell, zobacz about_Debuggers.

Przykłady

Przykład 1. Ustawianie punktu przerwania w wierszu

W tym przykładzie ustawia punkt przerwania w wierszu 5 skryptu Sample.ps1. Po uruchomieniu skryptu wykonanie zostanie zatrzymane bezpośrednio przed wykonaniem wiersza 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

Po ustawieniu nowego punktu przerwania według numeru Set-PSBreakpoint wiersza polecenie cmdlet generuje obiekt punktu przerwania wiersza (System.Management.Automation.LineBreakpoint), który zawiera identyfikator punktu przerwania i liczbę trafień.

Przykład 2. Ustawianie punktu przerwania w funkcji

W tym przykładzie zostanie utworzony punkt przerwania polecenia w Increment funkcji w poleceniu cmdlet Sample.ps1. Skrypt zatrzymuje wykonywanie bezpośrednio przed każdym wywołaniem określonej funkcji.

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

Wynikiem jest obiekt punktu przerwania polecenia. Przed uruchomieniem skryptu wartość właściwości HitCount wynosi 0.

Przykład 3. Ustawianie punktu przerwania w zmiennej

W tym przykładzie ustawia punkt przerwania w zmiennej Server w skryscie Sample.ps1. Używa parametru Mode z wartością ReadWrite , aby zatrzymać wykonywanie, gdy wartość zmiennej jest odczytywana i tuż przed zmianą wartości.

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

Przykład 4. Ustawianie punktu przerwania dla każdego polecenia rozpoczynającego się od określonego tekstu

W tym przykładzie ustawia punkt przerwania dla każdego polecenia w skryscie Sample.ps1 rozpoczynającym się od "write", na przykład Write-Host.

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

Przykład 5. Ustawianie punktu przerwania w zależności od wartości zmiennej

Ten przykład zatrzymuje wykonywanie DiskTest funkcji w Test.ps1 skrycie tylko wtedy, gdy wartość zmiennej $Disk jest większa niż 2.

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

Wartość akcji to blok skryptu, który sprawdza wartość $Disk zmiennej w funkcji.

Akcja używa słowa kluczowego break , aby zatrzymać wykonywanie, jeśli warunek zostanie spełniony. Alternatywą (i wartością domyślną) jest Kontynuuj.

Przykład 6. Ustawianie punktu przerwania w funkcji

W tym przykładzie ustawiono punkt przerwania CheckLog dla funkcji. Ponieważ polecenie nie określa skryptu, punkt przerwania jest ustawiony na wszystko, co działa w bieżącej sesji. Debuger przerywa działanie po wywołaniu funkcji, a nie po zadeklarowaniu.

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'

Przykład 7. Ustawianie punktów przerwania w wielu wierszach

W tym przykładzie ustawia trzy punkty przerwania wiersza w skryscie Sample.ps1. Ustawia jeden punkt przerwania w kolumnie 2 dla każdego wiersza określonego w skrycie. Akcja określona w parametrze Akcja dotyczy wszystkich punktów przerwania.

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

Określa polecenia uruchamiane w każdym punkcie przerwania zamiast przerywania. Wprowadź blok skryptu zawierający polecenia. Ten parametr służy do ustawiania warunkowych punktów przerwania lub wykonywania innych zadań, takich jak testowanie lub rejestrowanie.

Jeśli ten parametr zostanie pominięty lub nie określono żadnej akcji, wykonanie zostanie zatrzymane w punkcie przerwania, a debuger zostanie uruchomiony.

Gdy jest używany parametr Akcja, blok Skrypt akcji jest uruchamiany w każdym punkcie przerwania. Wykonanie nie zostanie zatrzymane, chyba że blok skryptu zawiera słowo kluczowe Break. Jeśli używasz słowa kluczowego Kontynuuj w bloku skryptu, wykonanie zostanie wznowione do następnego punktu przerwania.

Aby uzyskać więcej informacji, zobacz about_Script_Blocks, about_Break i about_Continue.

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Column

Określa numer kolumny w pliku skryptu, na którym kończy się wykonywanie. Wprowadź tylko jeden numer kolumny. Wartość domyślna to kolumna 1.

Wartość Kolumna jest używana z wartością parametru Line w celu określenia punktu przerwania. Jeśli parametr Liniowy określa wiele wierszy, parametr Kolumna ustawia punkt przerwania w określonej kolumnie na każdym z określonych wierszy. Program PowerShell przestaje wykonywać operacje przed instrukcją lub wyrażeniem zawierającym znak w określonej pozycji wiersza i kolumny.

Kolumny są liczone od lewego górnego marginesu rozpoczynającego się od numeru kolumny 1 (nie 0). Jeśli określisz kolumnę, która nie istnieje w skrycie, błąd nie zostanie zadeklarowany, ale punkt przerwania nigdy nie zostanie wykonany.

Type:Int32
Position:2
Default value:1
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Command

Ustawia punkt przerwania polecenia. Wprowadź nazwy poleceń cmdlet, takie jak Get-Process, lub nazwy funkcji. Dozwolone są symbole wieloznaczne.

Wykonanie zatrzymuje się tuż przed wykonaniem każdego wystąpienia każdego polecenia. Jeśli polecenie jest funkcją, wykonanie zatrzymuje się za każdym razem, gdy funkcja jest wywoływana i w każdej sekcji BEGIN, PROCESS i END.

Type:String[]
Aliases:C
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:True

-Line

Ustawia punkt przerwania wiersza w skrycie. Wprowadź co najmniej jedną liczbę wierszy rozdzielonych przecinkami. Program PowerShell zatrzymuje się bezpośrednio przed wykonaniem instrukcji rozpoczynającej się od każdego z określonych wierszy.

Wiersze są liczone od lewego górnego marginesu pliku skryptu rozpoczynającego się od numeru wiersza 1 (nie 0). Jeśli określisz pusty wiersz, wykonanie zostanie zatrzymane przed następnym niepustym wierszem. Jeśli linia jest poza zakresem, punkt przerwania nigdy nie zostanie trafiony.

Type:Int32[]
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Mode

Określa tryb dostępu wyzwalający punkty przerwania zmiennych. Wartość domyślna to Zapis.

Ten parametr jest prawidłowy tylko wtedy, gdy parametr zmiennej jest używany w poleceniu . Tryb dotyczy wszystkich punktów przerwania ustawionych w poleceniu . Dopuszczalne wartości dla tego parametru to:

  • Zapis — zatrzymuje wykonywanie bezpośrednio przed zapisaniem nowej wartości w zmiennej.
  • Odczyt — zatrzymuje wykonywanie, gdy zmienna jest odczytywana, czyli gdy uzyskuje dostęp do jej wartości, do przypisania, wyświetlania lub użycia. W trybie odczytu wykonanie nie zostanie zatrzymane, gdy wartość zmiennej ulegnie zmianie.
  • ReadWrite — zatrzymuje wykonywanie, gdy zmienna jest odczytywana lub zapisywana.
Type:VariableAccessMode
Accepted values:Read, Write, ReadWrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Script

Określa tablicę plików skryptów, w których to polecenie cmdlet ustawia punkt przerwania. Wprowadź ścieżki i nazwy plików co najmniej jednego pliku skryptu. Jeśli pliki znajdują się w bieżącym katalogu, możesz pominąć ścieżkę. Dozwolone są symbole wieloznaczne.

Domyślnie zmienne punkty przerwania i punkty przerwania poleceń są ustawiane na dowolnym poleceniu uruchamianym w bieżącej sesji. Ten parametr jest wymagany tylko w przypadku ustawiania punktu przerwania wiersza.

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Variable

Określa tablicę zmiennych, na których to polecenie cmdlet ustawia punkty przerwania. Wprowadź rozdzielaną przecinkami listę zmiennych bez znaków dolara ($).

Użyj parametru Mode , aby określić tryb dostępu wyzwalający punkty przerwania. Tryb domyślny, Zapis, zatrzymuje wykonywanie tuż przed zapisaniem nowej wartości w zmiennej.

Type:String[]
Aliases:V
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

None

Nie można przekazać potoku wejściowego do Set-PSBreakpointelementu .

Dane wyjściowe

CommandBreakpoint

LineBreakpoint

VariableBreakpoint

Set-PSBreakpoint Zwraca obiekt reprezentujący każdy punkt przerwania, który ustawia.

Uwagi

  • Set-PSBreakpoint program nie może ustawić punktu przerwania na komputerze zdalnym. Aby debugować skrypt na komputerze zdalnym, skopiuj skrypt na komputer lokalny, a następnie debuguj go lokalnie.
  • Po ustawieniu punktu przerwania dla więcej niż jednego wiersza, polecenia lub zmiennej Set-PSBreakpoint generuje obiekt punktu przerwania dla każdego wpisu.
  • Podczas ustawiania punktu przerwania w funkcji lub zmiennej w wierszu polecenia można ustawić punkt przerwania przed utworzeniem lub po utworzeniu funkcji lub zmiennej.