Share via


Set-PSBreakpoint

Legt einen Haltepunkt in einer Zeile, einem Befehl oder einer Variable fest.

Syntax

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

Beschreibung

Das Set-PSBreakpoint Cmdlet legt einen Haltepunkt in einem Skript oder in einem beliebigen Befehl fest, der in der aktuellen Sitzung ausgeführt wird. Sie können verwenden Set-PSBreakpoint , um einen Haltepunkt festzulegen, bevor Sie ein Skript ausführen oder einen Befehl ausführen, oder während des Debuggens, wenn sie an einem anderen Haltepunkt beendet werden.

Set-PSBreakpoint kann auf einem Remotecomputer keinen Haltepunkt festlegen. Um ein Skript auf einem Remotecomputer zu debuggen, kopieren Sie das Skript auf den lokalen Computer, und debuggen Sie es dann lokal.

Jeder Set-PSBreakpoint Befehl erstellt einen der folgenden drei Typen von Haltepunkten:

  • Zeilenhaltepunkt: Legt Haltepunkte für bestimmte Linien- und Spaltenkoordinaten fest.
  • Befehlshaltepunkt: Legt Haltepunkte für Befehle und Funktionen fest.
  • Variablenhaltepunkt: Legt Haltepunkte für Variablen fest.

Sie können einen Haltepunkt für mehrere Zeilen, Befehle oder Variablen in einem einzelnen Set-PSBreakpoint Befehl festlegen, aber jeder Set-PSBreakpoint Befehl legt nur einen Haltepunkttyp fest.

An einem Haltepunkt beendet PowerShell vorübergehend die Ausführung und gibt dem Debugger die Kontrolle. Die Eingabeaufforderung wird in DBG\>geändert, und eine Reihe von Debuggerbefehlen stehen zur Verwendung zur Verfügung. Sie können jedoch den Action-Parameter verwenden, um eine alternative Antwort anzugeben, z. B. Bedingungen für den Haltepunkt oder Anweisungen zum Ausführen zusätzlicher Aufgaben wie Protokollierung oder Diagnose.

Das Set-PSBreakpoint Cmdlet ist eines von mehreren Cmdlets, die zum Debuggen von PowerShell-Skripts entwickelt wurden. Weitere Informationen zum PowerShell-Debugger finden Sie unter about_Debuggers.

Beispiele

Beispiel 1: Festlegen eines Haltepunkts für eine Zeile

In diesem Beispiel wird ein Haltepunkt in Zeile 5 im Sample.ps1-Skript festgelegt. Wenn das Skript ausgeführt wird, wird die Ausführung unmittelbar vor der Ausführung von Zeile 5 beendet.

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

Wenn Sie einen neuen Haltepunkt nach Zeilennummer festlegen, generiert das Set-PSBreakpoint Cmdlet ein Zeilenhaltepunktobjekt (System.Management.Automation.LineBreakpoint), das die Haltepunkt-ID und die Trefferanzahl enthält.

Beispiel 2: Festlegen eines Haltepunkts für eine Funktion

In diesem Beispiel wird ein Befehlshaltepunkt für die Increment Funktion im Cmdlet Sample.ps1 erstellt. Das Skript wird unmittelbar vor jedem Aufruf der angegebenen Funktion beendet.

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

Das Ergebnis ist ein Befehlshaltepunktobjekt. Bevor das Skript ausgeführt wird, ist der Wert der HitCount-Eigenschaft 0.

Beispiel 3: Festlegen eines Haltepunkts für eine Variable

In diesem Beispiel wird ein Haltepunkt für die Servervariable im skript Sample.ps1 festgelegt. Es verwendet den Mode-Parameter mit dem Wert ReadWrite , um die Ausführung zu beenden, wenn der Wert der Variablen gelesen wird und kurz bevor sich der Wert ändert.

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

Beispiel 4: Festlegen eines Haltepunkts für jeden Befehl, der mit dem angegebenen Text beginnt

In diesem Beispiel wird ein Haltepunkt für jeden Befehl im Sample.ps1 Skript festgelegt, der mit "write" beginnt, z Write-Host. B. .

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

Beispiel 5: Festlegen eines Haltepunkts abhängig vom Wert einer Variablen

In diesem Beispiel wird die Ausführung der DiskTest Funktion im Test.ps1 Skript nur beendet, wenn der Wert der $Disk Variablen größer als 2 ist.

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

Der Wert der Aktion ist ein Skriptblock, der den Wert der $Disk Variablen in der Funktion testet.

Die Aktion verwendet den break Schlüsselwort (keyword), um die Ausführung zu beenden, wenn die Bedingung erfüllt ist. Die Alternative (und der Standardwert) ist Weiter.

Beispiel 6: Festlegen eines Haltepunkts für eine Funktion

In diesem Beispiel wird ein Haltepunkt für die CheckLog Funktion festgelegt. Da der Befehl kein Skript angibt, wird der Haltepunkt für alles festgelegt, was in der aktuellen Sitzung ausgeführt wird. Der Debugger wird unterbrochen, sobald die Funktion aufgerufen wird, nicht wenn sie deklariert wird.

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'

Beispiel 7: Festlegen von Haltepunkten für mehrere Zeilen

In diesem Beispiel werden drei Zeilenhaltepunkte im Sample.ps1 Skript festgelegt. Es wird ein Haltepunkt in Spalte 2 für jede im Skript angegebene Zeile festgelegt. Die im Action-Parameter angegebene Aktion gilt für alle Haltepunkte.

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

Parameter

-Action

Gibt die Befehle an, die an jedem Haltepunkt ausgeführt werden, anstatt unterbrochen zu werden. Geben Sie einen Skriptblock ein, der die Befehle enthält. Sie können diesen Parameter verwenden, um bedingte Haltepunkte festzulegen oder um andere Aufgaben auszuführen, z. B. Tests oder Protokollierung.

Wenn dieser Parameter nicht festgelegt ist oder keine Aktion angegeben ist, wird die Ausführung am Haltepunkt beendet, und der Debugger startet.

Wenn der Action-Parameter verwendet wird, wird der Action-Skriptblock an jedem Haltepunkt ausgeführt. Die Ausführung wird nicht beendet, es sei denn, der Skriptblock enthält das Schlüsselwort „Break“. Wenn Sie im Skriptblock das Schlüsselwort „Continue“ verwenden, wird die Ausführung bis zum nächsten Haltepunkt fortgesetzt.

Weitere Informationen finden Sie unter about_Script_Blocks, about_Break und about_Continue.

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

-Column

Gibt die Spaltennummer der Spalte in der Skriptdatei an, bei der die Ausführung angehalten wird. Geben Sie nur eine Spaltennummer an. Der Standardwert ist „Spalte 1“.

Der Column-Wert wird mit dem Wert des Line-Parameters verwendet, um den Haltepunkt anzugeben. Wenn der Parameter Line mehrere Zeilen angibt, legt der Column-Parameter einen Haltepunkt an der angegebenen Spalte für jede der angegebenen Zeilen fest. PowerShell beendet die Ausführung vor der Anweisung oder dem Ausdruck, die das Zeichen an der angegebenen Zeilen- und Spaltenposition enthält.

Spalten werden vom oberen linken Rand aus beginnend mit Spaltennummer 1 (nicht 0) gezählt. Wenn Sie eine Spalte angeben, die sich nicht im Skript befindet, wird kein Fehler ausgegeben, doch der Haltepunkt wird nie ausgeführt.

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

-Command

Legt einen Befehlshaltepunkt fest. Geben Sie Cmdlet-Namen ein, z Get-Process. B. oder Funktionsnamen. Platzhalter sind zulässig.

Die Ausführung wird sofort angehalten, bevor jede Instanz des jeweiligen Befehls ausgeführt wird. Wenn der Befehl eine Funktion ist, wird die Ausführung jedes Mal angehalten, wenn die Funktion aufgerufen wird, sowie bei jedem BEGIN-, PROCESS- und END-Abschnitt.

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

-Line

Legt einen Zeilenhaltepunkt in einem Skript fest. Geben Sie mindestens eine durch Kommas getrennte Zeilennummer ein. PowerShell wird unmittelbar vor dem Ausführen der Anweisung beendet, die für jede der angegebenen Zeilen beginnt.

Zeilen werden vom oberen linken Rand der Skriptdatei aus beginnend mit Zeilennummer 1 (nicht 0) gezählt. Wenn Sie eine leere Zeile angeben, endet die Ausführung vor der nächsten nicht leeren Zeile. Wenn die Zeile außerhalb des Bereichs liegt, wird der Haltepunkt niemals erreicht.

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

-Mode

Gibt den Zugriffsmodus an, der variable Haltepunkte auslöst. Der Standardwert ist Write.

Dieser Parameter ist nur gültig, wenn der Variable-Parameter im Befehl verwendet wird. Der Modus gilt für alle im Befehl festgelegten Haltepunkte. Zulässige Werte für diesen Parameter:

  • Schreiben : Beendet die Ausführung unmittelbar vor dem Schreiben eines neuen Werts in die Variable.
  • Lesen : Beendet die Ausführung, wenn die Variable gelesen wird, d. h. wenn auf den Wert zugegriffen wird, der zugewiesen, angezeigt oder verwendet werden soll. Im Lesemodus wird die Ausführung nicht beendet, wenn sich der Wert der Variablen ändert.
  • ReadWrite : Beendet die Ausführung, wenn die Variable gelesen oder geschrieben wird.
Type:VariableAccessMode
Accepted values:Read, Write, ReadWrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Script

Gibt ein Array von Skriptdateien an, in dem dieses Cmdlet einen Haltepunkt festlegt. Geben Sie die Pfade und Dateinamen von mindestens einer Datei ein. Wenn die Dateien sich im aktuellen Verzeichnis befinden, können Sie den Pfad weglassen. Platzhalter sind zulässig.

Standardmäßig werden Variablenhaltepunkte und Befehlshaltepunkte für einen beliebigen Befehl festgelegt, der in der aktuellen Sitzung ausgeführt wird. Dieser Parameter ist nur erforderlich, wenn Sie einen Zeilenhaltepunkt festlegen.

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

-Variable

Gibt ein Array von Variablen an, für das dieses Cmdlet Haltepunkte festlegt. Geben Sie eine durch Trennzeichen getrennte Liste von Variablen ohne Dollarzeichen ($) ein.

Verwenden Sie den Parameter Mode , um den Zugriffsmodus zu bestimmen, der die Haltepunkte auslöst. Der Standardmodus „Write“ beendet die Ausführung, kurz bevor ein neuer Wert in die Variable geschrieben wird.

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

Eingaben

None

Sie können keine Eingabe an übergeben Set-PSBreakpoint.

Ausgaben

CommandBreakpoint

LineBreakpoint

VariableBreakpoint

Set-PSBreakpoint gibt ein -Objekt zurück, das jeden breakpoint darstellt, den es festlegt.

Hinweise

  • Set-PSBreakpoint kann auf einem Remotecomputer keinen Haltepunkt festlegen. Um ein Skript auf einem Remotecomputer zu debuggen, kopieren Sie das Skript auf den lokalen Computer, und debuggen Sie es dann lokal.
  • Wenn Sie einen Haltepunkt für mehr als eine Zeile, einen Befehl oder eine Variable festlegen, Set-PSBreakpoint wird für jeden Eintrag ein Haltepunktobjekt generiert.
  • Beim Festlegen eines Haltepunkts für eine Funktion oder Variable an der Eingabeaufforderung können Sie den Haltepunkt festlegen, bevor oder nachdem Sie die Funktion oder Variable erstellen.