Fouten opsporen in Scripts in Windows PowerShell ISEHow to Debug Scripts in Windows PowerShell ISE

Dit onderwerp wordt beschreven hoe u fouten opsporen in scripts op een lokale computer met behulp van de visuele foutopsporing functies voor Windows PowerShell Integrated Scripting Environment (ISE).This topic describes how to debug scripts on a local computer by using the Windows PowerShell Integrated Scripting Environment (ISE) visual debugging features.

Onderbrekingspunten beherenHow to manage breakpoints

Een onderbrekingspunt is een aangewezen plaats in een script waar u de bewerking dat wilt te onderbreken, zodat u kunt controleren dat de huidige status van de variabelen en de omgeving waarin het script wordt uitgevoerd.A breakpoint is a designated spot in a script where you would like operation to pause so that you can examine the current state of the variables and the environment in which your script is running. Nadat het script is onderbroken door een onderbrekingspunt, kunt u opdrachten uitvoeren in het consolevenster de status van uw script te onderzoeken.Once your script is paused by a breakpoint, you can run commands in the Console Pane to examine the state of your script. U kunt uitvoer variabelen of andere opdrachten uitvoeren.You can output variables or run other commands. De waarde van eventuele variabelen die zichtbaar voor de context van het script dat wordt uitgevoerd zijn, kunt u ook wijzigen.You can even modify the value of any variables that are visible to the context of the currently running script. Nadat u hebt onderzocht wat u wilt zien, kunt u de werking van het script hervatten.After you have examined what you want to see, you can resume operation of the script.

U kunt drie soorten onderbrekingspunten instellen in de Windows PowerShell-foutopsporingsomgeving:You can set three types of breakpoints in the Windows PowerShell debugging environment:

  1. Regel onderbrekingspunt.Line breakpoint. Het script wordt onderbroken wanneer de aangewezen regel wordt bereikt tijdens de bewerking van het scriptThe script pauses when the designated line is reached during the operation of the script

  2. Variabele onderbrekingspunt.Variable breakpoint. Het script wordt onderbroken wanneer de waarde van de aangewezen variabele wordt gewijzigd.The script pauses whenever the designated variable's value changes.

  3. Opdracht onderbrekingspunt.Command breakpoint. Het script wordt onderbroken wanneer de opgegeven opdracht wordt uitgevoerd tijdens de bewerking van het script.The script pauses whenever the designated command is about to be run during the operation of the script. Parameters voor het verder filteren het onderbrekingspunt moet alleen de gewenste bewerking kan bevatten.It can include parameters to further filter the breakpoint to only the operation you want. De opdracht kan ook worden voor een functie die u hebt gemaakt.The command can also be a function you created.

Deze waarden in de Windows PowerShell ISE foutopsporingsomgeving kunnen alleen regel onderbrekingspunten worden ingesteld met behulp van het menu of de sneltoetsen.Of these, in the Windows PowerShell ISE debugging environment, only line breakpoints can be set by using the menu or the keyboard shortcuts. De andere twee soorten onderbrekingspunten kunnen worden ingesteld, maar ze worden ingesteld van het consolevenster met behulp van de Set PSBreakpoint cmdlet.The other two types of breakpoints can be set, but they are set from the Console Pane by using the Set-PSBreakpoint cmdlet. Deze sectie wordt beschreven hoe u kunt taken voor foutopsporing in Windows PowerShell ISE uitvoeren met behulp van de menu's, indien beschikbaar, en een breed scala aan opdrachten uitvoeren vanaf het consolevenster met behulp van scripts.This section describes how you can perform debugging tasks in Windows PowerShell ISE by using the menus where available, and perform a wider range of commands from the Console Pane by using scripting.

Een onderbrekingspunt instellenTo set a breakpoint

Pas nadat deze is opgeslagen, kan er een onderbrekingspunt in een script worden ingesteld.A breakpoint can be set in a script only after it has been saved. Met de rechtermuisknop op de regel waar u een regel onderbrekingspunt instellen en klik vervolgens op onderbrekingspunt.Right-click the line where you want to set a line breakpoint, and then click Toggle Breakpoint. Of klik op de regel waar u stelt een onderbrekingspunt regel en druk op F9 of Ga naar de Debug menu, klikt u op onderbrekingspunt.Or, click the line where you want to set a line breakpoint, and press F9 or, on the Debug menu, click Toggle Breakpoint.

Het volgende script is een voorbeeld van hoe u een variabele onderbrekingspunt van het consolevenster instellen met behulp van kunt de Set PSBreakpoint cmdlet.The following script is an example of how you can set a variable breakpoint from the Console Pane by using the Set-PSBreakpoint cmdlet.

# This command sets a breakpoint on the Server variable in the Sample.ps1 script.
Set-PSBreakpoint -Script sample.ps1 -Variable Server

Lijst van alle onderbrekingspuntenList all breakpoints

Geeft alle onderbrekingspunten in de huidige Windows PowerShell-sessie.Displays all breakpoints in the current Windows PowerShell session.

Op de Debug menu, klikt u op lijst onderbrekingspunten.On the Debug menu, click List Breakpoints. Het volgende script is een voorbeeld van hoe u alle onderbrekingspunten van het consolevenster weergeven met behulp van kunt de Get-PSBreakpoint cmdlet.The following script is an example of how you can list all breakpoints from the Console Pane by using the Get-PSBreakpoint cmdlet.

# This command lists all breakpoints in the current session. 
Get-PSBreakpoint

Een onderbrekingspunt verwijderenRemove a breakpoint

Een onderbrekingspunt verwijderen, wordt deze verwijderd.Removing a breakpoint deletes it.

Als u denkt u het later opnieuw gebruiken dat, kunt u mogelijk wilt uitschakelen van een onderbrekingspunt deze in plaats daarvan.If you think you might want to use it again later, consider Disable a Breakpoint it instead. Met de rechtermuisknop op de regel waar u een onderbrekingspunt verwijderen en klik vervolgens op onderbrekingspunt.Right-click the line where you want to remove a breakpoint, and then click Toggle Breakpoint. Of klik op de regel waar u wilt een onderbrekingspunt verwijderen en klik op de Debug menu, klikt u op onderbrekingspunt.Or, click the line where you want to remove a breakpoint, and on the Debug menu, click Toggle Breakpoint. Het volgende script is een voorbeeld van een onderbrekingspunt met een opgegeven ID van het consolevenster verwijderen met behulp van de verwijderen PSBreakpoint cmdlet.The following script is an example of how to remove a breakpoint with a specified ID from the Console Pane by using the Remove-PSBreakpoint cmdlet.

# This command deletes the breakpoint with breakpoint ID 2.
Remove-PSBreakpoint -Id 2

Verwijder alle onderbrekingspuntenRemove All Breakpoints

Verwijderen van alle onderbrekingspunten gedefinieerd in de huidige sessie op de Debug menu, klikt u op onderbrekingspunten verwijderen.To remove all breakpoints defined in the current session, on the Debug menu, click Remove All Breakpoints.

Het volgende script is een voorbeeld van hoe alle onderbrekingspunten verwijderen uit het consolevenster met behulp van de verwijderen PSBreakpoint cmdlet.The following script is an example of how to remove all breakpoints from the Console Pane by using the Remove-PSBreakpoint cmdlet.

# This command deletes all of the breakpoints in the current session.
Get-PSBreakpoint | Remove-PSBreakpoint

Een onderbrekingspunt uitschakelenDisable a Breakpoint

Een onderbrekingspunt uitschakelen wordt niet verwijderd. het uitgeschakeld totdat deze is ingeschakeld.Disabling a breakpoint does not remove it; it turns it off until it is enabled. Met de rechtermuisknop op de regel waar u een onderbrekingspunt uitschakelen en klik vervolgens op als wilt uitschakelen op een specifieke regel onderbrekingspunt, onderbrekingspunt uitschakelen.To disable a specific line breakpoint, right-click the line where you want to disable a breakpoint, and then click Disable Breakpoint. Of klik op de regel waar u wilt een onderbrekingspunt uitschakelen en druk op F9 of Ga naar de Debug menu, klikt u op onderbrekingspunt uitschakelen.Or, click the line where you want to disable a breakpoint, and press F9 or, on the Debug menu, click Disable Breakpoint. Het volgende script is een voorbeeld van hoe u een onderbrekingspunt met een opgegeven ID van het consolevenster verwijderen met behulp van kunt de uitschakelen PSBreakpoint cmdlet.The following script is an example of how you can remove a breakpoint with a specified ID from the Console Pane by using the Disable-PSBreakpoint cmdlet.

# This command disables the breakpoint with breakpoint ID 0.
Disable-PSBreakpoint -Id 0

Alle onderbrekingspunten uitschakelenDisable All Breakpoints

Een onderbrekingspunt uitschakelen wordt niet verwijderd. het uitgeschakeld totdat deze is ingeschakeld.Disabling a breakpoint does not remove it; it turns it off until it is enabled. Alle onderbrekingspunten uitschakelen in de huidige sessie op de Debug menu, klikt u op alle onderbrekingspunten uitschakelen.To disable all breakpoints in the current session, on the Debug menu, click Disable all Breakpoints. Het volgende script is een voorbeeld van hoe u alle onderbrekingspunten van het consolevenster uitschakelen met behulp van kunt de uitschakelen PSBreakpoint cmdlet.The following script is an example of how you can disable all breakpoints from the Console Pane by using the Disable-PSBreakpoint cmdlet.

# This command disables all breakpoints in the current session. 
# You can abbreviate this command as: "gbp | dbp".
Get-PSBreakpoint | Disable-PSBreakpoint

Een onderbrekingspunt inschakelenEnable a Breakpoint

Om een specifieke onderbrekingspunt, met de rechtermuisknop op de regel waar u een onderbrekingspunt inschakelen en klik vervolgens op onderbrekingspunt inschakelen.To enable a specific breakpoint, right-click the line where you want to enable a breakpoint, and then click Enable Breakpoint. Of klik op de regel waar u wilt een onderbrekingspunt inschakelen en druk vervolgens op F9 of Ga naar de Debug menu, klikt u op onderbrekingspunt inschakelen.Or, click the line where you want to enable a breakpoint, and then press F9 or, on the Debug menu, click Enable Breakpoint. Het volgende script is een voorbeeld van hoe u specifieke onderbrekingspunten van het consolevenster inschakelen met behulp van kunt de inschakelen PSBreakpoint cmdlet.The following script is an example of how you can enable specific breakpoints from the Console Pane by using the Enable-PSBreakpoint cmdlet.

# This command enables breakpoints with breakpoint IDs 0, 1, and 5.
Enable-PSBreakpoint -Id 0, 1, 5

Alle onderbrekingspunten inschakelenEnable All Breakpoints

U alle onderbrekingspunten gedefinieerd in de huidige sessie op de Debug menu, klikt u op alle onderbrekingspunten.To enable all breakpoints defined in the current session, on the Debug menu, click Enable all Breakpoints. Het volgende script is een voorbeeld van hoe u alle onderbrekingspunten van het consolevenster inschakelen met behulp van kunt de inschakelen PSBreakpoint cmdlet.The following script is an example of how you can enable all breakpoints from the Console Pane by using the Enable-PSBreakpoint cmdlet.

# This command enables all breakpoints in the current session. 
# You can abbreviate the command by using their aliases: "gbp | ebp".
Get-PSBreakpoint | Enable-PSBreakpoint

Het beheren van een sessie voor foutopsporingHow to manage a debugging session

Voordat u foutopsporing, moet u een of meer onderbrekingspunten instellen.Before you start debugging, you must set one or more breakpoints. U kunt een onderbrekingspunt niet instellen, tenzij het script dat u fouten wilt opsporen wordt opgeslagen.You cannot set a breakpoint unless the script that you want to debug is saved. Zie voor instructies over hoe u kunt geen onderbrekingspunt instellen onderbrekingspunten beheren of Set PSBreakpoint.For directions on of how to set a breakpoint, see How to manage breakpoints or Set-PSBreakpoint. Nadat u foutopsporing hebt gestart, kunt u een script niet bewerken, totdat u stopt met het opsporen van fouten.After you start debugging, you cannot edit a script until you stop debugging. Een script met een of meer onderbrekingspunten die zijn ingesteld, wordt automatisch opgeslagen voordat deze wordt uitgevoerd.A script that has one or more breakpoints set is automatically saved before it is run.

Foutopsporing te startenTo start debugging

Druk op F5 of klik op de werkbalk op de -Script uitvoeren pictogram, of op de Debug menu klikt u op uitvoeren/doorgaan.Press F5 or, on the toolbar, click the Run Script icon, or on the Debug menu click Run/Continue. Het script wordt uitgevoerd totdat de eerste onderbrekingspunt aangetroffen.The script runs until it encounters the first breakpoint. Deze bewerking daar pauzeert en markeert u de regel waarop het programma is onderbroken.It pauses operation there and highlights the line on which it paused.

Om door te gaan met het opsporen van foutenTo continue debugging

Druk op F5 of klik op de werkbalk op de -Script uitvoeren pictogram, of op de fouten opsporen in menu, klikt u op uitvoeren/doorgaan of typ in het consolevenster C en druk vervolgens op ENTER.Press F5 or, on the toolbar, click the Run Script icon, or on the Debug menu, click Run/Continue or, in the Console Pane, type C and then press ENTER. Dit zorgt ervoor dat het script om door te gaan naar het volgende onderbrekingspunt of aan het einde van het script uitgevoerd als er geen verdere onderbrekingspunten optreden.This causes the script to continue running to the next breakpoint or to the end of the script if no further breakpoints are encountered.

De aanroepstack weergevenTo view the call stack

De aanroepstack geeft de huidige locatie in het script wordt uitgevoerd.The call stack displays the current run location in the script. Als het script wordt uitgevoerd in een functie die is aangeroepen door een andere functie, vervolgens die wordt weergegeven in de weergave door extra rijen in de uitvoer.If the script is running in a function that was called by a different function, then that is represented in the display by additional rows in the output. De onderste rij worden het oorspronkelijke script en de regel weergegeven in het waarin een functie is aangeroepen.The bottom-most row displays the original script and the line in it in which a function was called. De volgende regel geeft die functie en de regel in het waarin een andere functie mogelijk is aangeroepen.The next line up shows that function and the line in it in which another function might have been called. De bovenste rij geeft de huidige context van de huidige regel waarop het onderbrekingspunt is ingesteld.The top-most row shows the current context of the current line on which the breakpoint is set.

Terwijl onderbroken, om te zien van de huidige aanroepstack, drukt u op CTRL + SHIFT + D of Ga naar de Debug menu, klikt u op weergave Call Stack of typ in het consolevenster K en druk vervolgens op ENTER.While paused, to see the current call stack, press CTRL+SHIFT+D or, on the Debug menu, click Display Call Stack or, in the Console Pane, type K and then press ENTER.

Foutopsporing stoppenTo stop debugging

Druk op SHIFT F5 of Ga naar de Debug menu, klikt u op foutopsporingsprogramma stopt, of typ in het consolevenster Q en druk vervolgens op Voer.Press SHIFT-F5 or, on the Debug menu, click Stop Debugger, or, in the Console Pane, type Q and then press ENTER.

Het overslaan, stap en stap uit tijdens het opsporen van foutenHow to step over, step into, and step out while debugging

Stap voor stap is het proces van één instructie tegelijk uitvoeren.Stepping is the process of running one statement at a time. U kunt stoppen op een regel code en de waarde van variabelen en de status van het systeem controleren.You can stop on a line of code, and examine the values of variables and the state of the system. De volgende tabel worden algemene taken voor foutopsporing zoals via doorlopen, selecteert u en selecteert u uit.The following table describes common debugging tasks such as stepping over, stepping into, and stepping out.

Foutopsporing van taakDebugging Task BeschrijvingDescription Het uitvoeren van deze in de PowerShell ISEHow to accomplish it in PowerShell ISE
In stapStep Into De huidige instructie worden uitgevoerd en stopt bij de volgende instructie.Executes the current statement and then stops at the next statement. Als de huidige instructie een functie of script aanroep, wordt de foutopsporingsprogramma stappen in deze functie of script is, anders wordt gestopt bij de volgende instructie.If the current statement is a function or script call, then the debugger steps into that function or script, otherwise it stops at the next statement. Druk op F11 of Ga naar de Debug menu, klikt u op stap, of typ in het consolevenster S en druk op ENTER.Press F11 or, on the Debug menu, click Step Into, or in the Console Pane, type S and press ENTER.
Stap OverStep Over De huidige instructie worden uitgevoerd en stopt bij de volgende instructie.Executes the current statement and then stops at the next statement. Als de huidige instructie een aanroep van functie of script is vervolgens het foutopsporingsprogramma de hele functie of het script wordt uitgevoerd en stopt bij de volgende instructie na de functieaanroep.If the current statement is a function or script call then the debugger executes the whole function or script, and it stops at the next statement after the function call. Druk op F10 of Ga naar de Debug menu, klikt u op stap Over, of typ in het consolevenster V en druk op ENTER.Press F10 or, on the Debug menu, click Step Over, or in the Console Pane, type V and press ENTER.
Stap uitStep Out Stap buiten de huidige functie en één niveau als de functie is genest.Steps out of the current function and up one level if the function is nested. Als het script in de hoofdtekst is uitgevoerd met het einde of voor het volgende onderbrekingspunt.If in the main body, the script is executed to the end, or to the next breakpoint. De overgeslagen instructies zijn uitgevoerd, maar niet via met interval.The skipped statements are executed, but not stepped through. Druk op SHIFT + F11, of op de Debug menu, klikt u op stap uit, of typ in het consolevenster O en druk op ENTER.Press SHIFT+F11, or on the Debug menu, click Step Out, or in the Console Pane, type O and press ENTER.
DoorgaanContinue Kan worden uitgevoerd bij het einde of voor het volgende onderbrekingspunt blijft.Continues execution to the end, or to the next breakpoint. De overgeslagen functies en aanroepen zijn wordt uitgevoerd, maar wordt niet gevolgd door.The skipped functions and invocations are executed, but not stepped through. Druk op F5 of Ga naar de Debug menu, klikt u op uitvoeren/doorgaan, of typ in het consolevenster C en druk op ENTER.Press F5 or, on the Debug menu, click Run/Continue, or in the Console Pane, type C and press ENTER.

De waarden van variabelen weergeven tijdens het opsporen van foutenHow to display the values of variables while debugging

U kunt de huidige waarden van variabelen weergeven in het script tijdens het doorlopen van de code.You can display the current values of variables in the script as you step through the code.

Om de waarden van standaard variabelen weer te gevenTo display the values of standard variables

Gebruik een van de volgende methoden:Use one of the following methods:

  • In het scriptvenster de muisaanwijzer op de variabele in op de waarde wordt weergegeven als knopinfo.In the Script Pane, hover over the variable to display its value as a tool tip.

  • Typ in het consolevenster de naam van variabele en druk op ENTER.In the Console Pane, type the variable name and press ENTER.

Alle deelvensters in ISE zich altijd in dezelfde scope.All panes in ISE are always in the same scope. Terwijl u fouten van een script opspoort, moet de opdrachten die u in het consolevenster typt uitgevoerd daarom in script-bereik.Therefore, while you are debugging a script, the commands that you type in the Console Pane run in script scope. Hiermee kunt u het consolevenster gebruiken om te zoeken naar de waarden van variabelen en functies die zijn gedefinieerd in het script alleen aanroepen.This allows you to use the Console Pane to find the values of variables and call functions that are defined only in the script.

Om de waarden van automatische variabelen weer te gevenTo display the values of automatic variables

De bovenstaande methode kunt u de waarde van bijna alle variabelen worden weergegeven terwijl u fouten een script opspoort.You can use the preceding method to display the value of almost all variables while you are debugging a script. Deze methoden werkt echter niet voor de volgende automatische variabelen.However, these methods do not work for the following automatic variables.

  • $$

  • $Input$Input

  • $MyInvocation$MyInvocation

  • $PSBoundParameters$PSBoundParameters

  • $Args$Args

Als u probeert om de waarde van een van deze variabelen weer te geven, krijgt u de waarde van die variabele voor in een interne pijplijn het foutopsporingsprogramma wordt gebruikt, niet de waarde van de variabele in het script.If you try to display the value of any of these variables, you get the value of that variable for in an internal pipeline the debugger uses, not the value of the variable in the script. U kunt omzeilen dit voor een aantal variabelen ($, $Input $MyInvocation, $PSBoundParameters en $Args) met behulp van de volgende methode:You can work around this for a few variables ($, $Input, $MyInvocation, $PSBoundParameters, and $Args) by using the following method:

  1. In het script moet u de waarde van de automatische variabele toewijzen aan een nieuwe variabele.In the script, assign the value of the automatic variable to a new variable.

  2. De waarde van de nieuwe variabele weergeven door de muiswijzer op de nieuwe variabele in het scriptvenster of door de nieuwe variabele in het consolevenster in te voeren.Display the value of the new variable, either by hovering over the new variable in the Script Pane, or by typing the new variable in the Console Pane.

Bijvoorbeeld, zodat de waarde van de variabele $MyInvocation in het script de waarde toewijzen aan een nieuwe variabele, zoals $scriptname, en vervolgens de muisaanwijzer of typt u de variabele $scriptname om de waarde ervan weer te geven.For example, to display the value of the $MyInvocation variable, in the script, assign the value to a new variable, such as $scriptname, and then hover over or type the $scriptname variable to display its value.

#In MyScript.ps1
$scriptname = $MyInvocation.MyCommand.Path

#In the Console Pane:
C:\ps-test> $scriptname
C:\ps-test\MyScript.ps1

Zie ookSee Also