Legt einen Haltepunkt für eine Zeile, einen Befehl oder eine Variable fest.
Syntax
Set-PSBreakpoint -Command <string[]> [[-Script] <string[]>] [-Action <scriptblock>] [<CommonParameters>] Set-PSBreakpoint [-Script] <string[]> [-Line] <Int32[]> [[-Column] <int>] [-Action <scriptblock>] [<CommonParameters>] Set-PSBreakpoint -Variable <string[]> [[-Script] <string[]>] [-Mode {<Read> | <Write> | <ReadWrite>}] [-Action <scriptblock>] [<CommonParameters>]
Beschreibung
Mit dem Cmdlet "Set-PSBreakpoint" wird ein Haltepunkt in einem Skript oder einem beliebigen Befehl festgelegt, das bzw. der in der aktuellen Sitzung ausgeführt wird. Vor dem Ausführen eines Skripts oder eines Befehls oder wenn die Ausführung während des Debuggens an einem anderen Haltepunkt angehalten wird, können Sie mithilfe von Set-PSBreakpoint einen Haltepunkt festlegen.
Hinweis: Mit Set-PSBreakpoint kann kein Haltepunkt auf einem Remotecomputer festgelegt werden. Um ein Skript auf einem Remotecomputer zu debuggen, kopieren Sie das Skript auf den lokalen Computer, und debuggen Sie es dann lokal.
Mit dem Befehl "Set-PSBreakpoint" wird immer einer der folgenden drei Typen von Haltepunkten erstellt:
– Zeilenhaltepunkt: Legt Haltepunkte an bestimmten Zeilen- und Spaltenkoordinaten fest.
– Befehlshaltepunkt: Legt Haltepunkte für Befehle und Funktionen fest.
– Variablenhaltepunkt: Legt Haltepunkte für Variablen fest.
Sie können in einem einzelnen Befehl "Set-PSBreakpoint" einen Haltepunkt für mehrere Zeilen, Befehle oder Variablen festlegen, jedoch wird mit dem Befehl "Set-PSBreakpoint" immer nur ein Typ von Haltepunkt festgelegt.
Bei einem Haltepunkt wird die Ausführung von Windows PowerShell vorübergehend beendet, und die Steuerung wird an den Debugger übergeben. Die Eingabeaufforderung ändert sich in "DBG>", und ein Satz von Debuggerbefehlen kann nun verwendet werden. Sie können jedoch mit dem Action-Parameter eine alternative Reaktion angeben, z. B. Bedingungen für den Haltepunkt oder Anweisungen zum Ausführen zusätzlicher Aufgaben, beispielsweise Protokollierung oder Diagnose.
Das Cmdlet "Set-PSBreakpoint" ist eines von mehreren Cmdlets zum Debuggen von Windows PowerShell-Skripten. Weitere Informationen über den Windows PowerShell-Debugger finden Sie unter "about_Debuggers".
Parameter
-Action <scriptblock>
Gibt Befehle an, die an jedem Haltepunkt ausgeführt werden, statt die Ausführung anzuhalten. Geben Sie einen Skriptblock ein, der die Befehle enthält. Sie können diesen Parameter verwenden, um bedingte Haltepunkte festzulegen oder andere Aufgaben auszuführen, z. B. Testen oder Protokollieren.
Wenn dieser Parameter weggelassen oder keine Aktion angegeben wird, wird die Ausführung am Haltepunkt angehalten, und der Debugger wird gestartet.
Bei Verwendung des Action-Parameters wird an jedem Haltepunkt der Action-Skriptblock ausgeführt. Die Ausführung wird nur angehalten, wenn der Skriptblock das Break-Schlüsselwort enthält. Wenn Sie das Continue-Schlüsselwort im Skriptblock verwenden, wird die Ausführung bis zum nächsten Haltepunkt fortgesetzt.
Weitere Informationen finden Sie unter "about_Script_Blocks", "about_Break" und "about_Continue".
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Column <int>
Gibt die Spaltennummer der Spalte in der Skriptdatei an, bei der die Ausführung angehalten wird. Geben Sie nur eine Spaltennummer ein. Der Standardwert ist Spalte 1.
Zum Angeben des Haltepunkts wird der Column-Wert mit dem Wert des Line-Parameters verwendet. Wenn der Line-Parameter mehrere Zeilen angibt, legt der Column-Parameter für jede der angegebenen Zeilen einen Haltepunkt in der angegebenen Spalte fest. Die Ausführung von Windows PowerShell wird vor der Anweisung oder dem Ausdruck angehalten, der bzw. die das Zeichen an der angegebenen Zeilen- und Spaltenposition enthält.
Spalten werden ab Spaltennummer 1 (nicht 0) vom oberen linken Rand gezählt. Wenn Sie eine Spalte angeben, die im Skript nicht vorhanden ist, wird kein Fehler deklariert, der Haltepunkt wird jedoch nie ausgeführt.
Erforderlich? |
false |
Position? |
3 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Command <string[]>
Legt einen Befehlshaltepunkt fest. Geben Sie Befehlsnamen, z. B. "Get-Process", oder Funktionsnamen ein. Platzhalter sind zulässig.
Die Ausführung wird direkt vor dem Ausführen der einzelnen Instanzen jedes Befehls angehalten. Wenn der Befehl eine Funktion ist, wird die Ausführung bei jedem Aufruf der Funktion und bei jedem BEGIN-, PROCESS- und END-Abschnitt angehalten.
Erforderlich? |
true |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
true |
-Line <Int32[]>
Legt einen Zeilenhaltepunkt in einem Skript fest. Geben Sie eine oder mehrere durch Trennzeichen getrennte Zeilennummern ein. Windows PowerShell wird direkt vor dem Ausführen der Anweisung angehalten, die in der jeweiligen angegebenen Zeile beginnt.
Zeilen werden vom oberen linken Rand der Skriptdatei ab Zeilennummer 1 (nicht 0) gezählt. Wenn Sie eine Leerzeile angeben, wird die Ausführung vor der nächsten nicht leeren Zeile angehalten. Wenn die Zeile außerhalb des Bereichs liegt, wird der Haltepunkt nie erreicht.
Erforderlich? |
true |
Position? |
2 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Mode <VariableAccessMode>
Bestimmt den Zugriffsmodus zum Auslösen von Variablenhaltepunkten. Der Standardwert ist "Write".
Dieser Parameter ist nur gültig, wenn der Variable-Parameter im Befehl verwendet wird. Der Modus gilt für alle festgelegten Haltepunkte in dem Befehl.
Gültige Werte:
– Write: Beendet die Ausführung sofort, bevor ein neuer Wert in die Variable geschrieben wird.
– Read: Beendet die Ausführung, wenn die Variable gelesen wird, d. h, wenn auf ihren Wert zugegriffen wird, um ihn zuzuweisen, anzuzeigen oder zu verwenden. Im Modus "Read" wird die Ausführung nicht angehalten, wenn sich der Wert der Variablen ändert.
– ReadWrite: Beendet die Ausführung, wenn die Variable gelesen oder geschrieben wird.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Script <string[]>
Legt in jeder der angegebenen Skriptdateien einen Haltepunkt fest. Geben Sie Pfade und Dateinamen einer oder mehrerer Skriptdateien ein. Wenn sich die Dateien 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 ein Zeilenhaltepunkt festgelegt wird.
Erforderlich? |
false |
Position? |
1 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
true |
-Variable <string[]>
Legt einen Variablenhaltepunkt fest. Geben Sie eine durch Trennzeichen getrennte Liste von Variablen ohne Dollarzeichen ($) ein.
Bestimmen Sie den Zugriffsmodus zum Auslösen der Haltepunkte mithilfe der Mode-Parameter. Im Standardmodus "Write" wird die Ausführung angehalten, bevor ein neuer Wert in die Variable geschrieben wird.
Erforderlich? |
true |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
<CommonParameters>
Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.
Eingaben und Ausgaben
Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.
Eingaben |
None Eingaben können nicht über die Pipeline an Set-PSBreakpoint übergeben werden. |
Ausgaben |
Haltepunktobjekt (System.Management.Automation.LineBreakpoint, System.Management.Automation.VariableBreakpoint, System.Management.Automation.CommandBreakpoint) Set-PSBreakpoint gibt ein Objekt zurück, das die einzelnen festgelegten Haltepunkt darstellt. |
Hinweise
Mit Set-PSBreakpoint kann kein Haltepunkt auf einem Remotecomputer festgelegt werden. 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 mehrere Zeilen, Befehle oder Variablen festlegen, generiert Set-PSBreakpoint für jeden Eintrag ein Haltepunktobjekt.
Wenn Sie einen Haltepunkt für eine Funktion oder Variable an der Eingabeaufforderung festlegen, können Sie den Haltepunkt vor oder nach dem Erstellen der Funktion bzw. Variablen festlegen.
Beispiel 1
C:\PS>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 Beschreibung ----------- Mit diesem Befehl wird ein Haltepunkt im Skript "Sample.ps1" in Zeile 5 festgelegt. Folglich wird die Ausführung des Skripts direkt vor Zeile 5 angehalten. Wenn Sie einen neuen Haltepunkt nach Zeilennummer festlegen, generiert das Cmdlet "Set-PSBreakpoint" ein Zeilenhaltepunktobjekt (System.Management.Automation.LineBreakpoint), das die Haltepunkt-ID und die Trefferanzahl enthält, wie in der folgenden Beispielausgabe angezeigt.
Beispiel 2
C:\PS>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 Beschreibung ----------- Mit diesem Befehl wird ein Befehlshaltepunkt für die Increment-Funktion im Skript "Sample.ps1" erstellt. Die Ausführung des Skripts wird direkt vor jedem Aufruf der angegebenen Funktion angehalten. Das Ergebnis ist ein Befehlshaltepunktobjekt. Vor der Ausführung des Skripts ist der Wert der HitCount-Eigenschaft 0.
Beispiel 3
C:\PS>set-psbreakpoint -script sample.ps1 -variable Server -Mode ReadWrite Beschreibung ----------- Mit diesem Befehl wird ein Haltepunkt für die Variable "Server" im Skript "Sample.ps1" festgelegt. Er verwendet den Mode-Parameter mit dem Wert "ReadWrite", um die Ausführung direkt vor dem Ändern des Werts der Variablen sowie beim Lesen des Werts zu beenden.
Beispiel 4
C:\PS>set-psbreakpoint -script Sample.ps1 -command "write*" Beschreibung ----------- Mit diesem Befehl wird ein Haltepunkt für jeden Befehl im Skript "Sample.ps1" festgelegt, der mit "write" beginnt, z. B. "write-host".
Beispiel 5
C:\PS>set-psbreakpoint -script test.ps1 -command DiskTest ` -action { (if $disk -gt 2) { break } } Beschreibung ----------- Mit diesem Befehl wird die Ausführung an der Funktion "DiskTest" im Skript "Test.ps1" nur beendet, wenn der Wert der Variablen "$disk" größer als 2 ist. Mit dem Cmdlet "Set-PSBreakpoint" wird ein Befehlshaltepunkt für die Funktion "DiskTest" festgelegt. Der Wert der Aktion ist ein Skriptblock, mit dem der Wert der Variablen "$disk" in der Funktion überprüft wird. Die Aktion beendet die Ausführung mithilfe des BREAK-Schlüsselworts, wenn die Bedingung erfüllt ist. Die Alternative (und der Standardwert) ist CONTINUE.
Beispiel 6
C:\PS>set-psbreakpoint -command checkpoint-computer Id : 0 Command : checkpoint-computer Enabled : True HitCount : 0 Action : C:\PS> function CheckLog { >> get-eventlog -log Application | >> where {($_.source -like "TestApp") -and ($_.Message -like "*failed*")} >>} >> C:\PS> Checklog DEBUG: Hit breakpoint(s) DEBUG: Function breakpoint on 'prompt:Checklog' C:\PS>>> Beschreibung ----------- Mit diesem Befehl wird ein Haltepunkt für die Funktion "CheckLog" festgelegt. Da der Befehl kein Skript angibt, wird der Haltepunkt für jedes in der aktuellen Sitzung ausgeführte Element festgelegt. Der Debugger wird unterbrochen, wenn die Funktion aufgerufen wird, nicht wenn sie deklariert wird.
Beispiel 7
C:\PS>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 Beschreibung ----------- Mit diesem Befehl werden drei Zeilenhaltepunkte im Skript "Sample.ps1" festgelegt. Für jede angegebene Zeile im Skript wird ein Haltepunkt in Spalte 2 festgelegt. Die im Action-Parameter angegebene Aktion wird auf alle Haltepunkte angewendet.
Siehe auch