Felsök skript i Windows PowerShell ISE

Den här artikeln beskriver hur du felsöker skript på en lokal dator med hjälp av funktionerna för visuell felsökning i Windows PowerShell ISE (Integrated Scripting Environment).

Hantera brytpunkter

En brytpunkt är en avsedd plats i ett skript där du vill att åtgärden ska pausas så att du kan undersöka det aktuella tillståndet för variablerna och miljön där skriptet körs. När skriptet har pausats av en brytpunkt kan du köra kommandon i konsolfönstret för att undersöka tillståndet för skriptet. Du kan mata ut variabler eller köra andra kommandon. Du kan även ändra värdet för alla variabler som är synliga för kontexten för det skript som körs. När du har undersökt vad du vill se kan du återuppta skriptets drift.

Du kan ange tre typer av brytpunkter i Windows PowerShell felsökningsmiljön:

  1. Radbrytningspunkt. Skriptet pausar när den avsedda raden nås under skriptets drift

  2. Variabel brytpunkt. Skriptet pausas när den avsedda variabelns värde ändras.

  3. Kommandobrytpunkt. Skriptet pausas när det avsedda kommandot är på väg att köras under skriptets drift. Den kan innehålla parametrar för att ytterligare filtrera brytpunkten till endast den åtgärd du vill ha. Kommandot kan också vara en funktion som du har skapat.

Av dessa i Windows PowerShell ISE-felsökningsmiljön kan endast radbrytningspunkter anges med hjälp av menyn eller kortkommandona. De andra två typerna av brytpunkter kan anges, men de anges från konsolfönstret med hjälp av cmdleten Set-PSBreakpoint . Det här avsnittet beskriver hur du kan utföra felsökningsuppgifter i Windows PowerShell ISE med hjälp av menyerna där det är tillgängligt och utföra ett större antal kommandon från konsolfönstret med hjälp av skript.

Så här anger du en brytpunkt

En brytpunkt kan bara anges i ett skript när den har sparats. Högerklicka på den rad där du vill ange en radbrytningspunkt och klicka sedan på Växla brytpunkt. Eller klicka på den rad där du vill ange en radbrytningspunkt och tryck på F9 eller klicka på Växla brytpunktfelsökningsmenyn.

Följande skript är ett exempel på hur du kan ange en variabel brytpunkt från konsolfönstret med hjälp av cmdleten Set-PSBreakpoint .

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

Visa en lista över alla brytpunkter

Visar alla brytpunkter i den aktuella Windows PowerShell sessionen.

På menyn Felsöka klickar du på Lista brytpunkter. Följande skript är ett exempel på hur du kan lista alla brytpunkter från konsolfönstret med hjälp av cmdleten Get-PSBreakpoint .

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

Ta bort en brytpunkt

Om du tar bort en brytpunkt tas den bort.

Om du tror att du kanske vill använda den igen senare kan du överväga att inaktivera en brytpunkt i stället. Högerklicka på den rad där du vill ta bort en brytpunkt och klicka sedan på VäxlaGrupppunkt. Eller klicka på raden där du vill ta bort en brytpunkt och klicka på Växla brytpunktfelsökningsmenyn. Följande skript är ett exempel på hur du tar bort en brytpunkt med ett angivet ID från konsolfönstret med hjälp av cmdleten Remove-PSBreakpoint .

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

Ta bort alla brytpunkter

Om du vill ta bort alla brytpunkter som definierats i den aktuella sessionen går du till felsökningsmenyn och klickar på Ta bort alla brytpunkter.

Följande skript är ett exempel på hur du tar bort alla brytpunkter från konsolfönstret med hjälp av cmdleten Remove-PSBreakpoint .

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

Inaktivera en brytpunkt

Om du inaktiverar en brytpunkt tar den inte bort den. Den inaktiverar den tills den är aktiverad. Om du vill inaktivera en specifik radbrytningspunkt högerklickar du på raden där du vill inaktivera en brytpunkt och klickar sedan på Inaktivera brytpunkt.

Eller klicka på raden där du vill inaktivera en brytpunkt och tryck på F9 eller klicka på Inaktivera brytpunktfelsökningsmenyn. Följande skript är ett exempel på hur du kan ta bort en brytpunkt med ett angivet ID från konsolfönstret med hjälp av cmdleten Disable-PSBreakpoint .

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

Inaktivera alla brytpunkter

Om du inaktiverar en brytpunkt tar den inte bort den. den stänger av den tills den är aktiverad. Om du vill inaktivera alla brytpunkter i den aktuella sessionen går du till felsökningsmenyn och klickar på Inaktivera alla brytpunkter. Följande skript är ett exempel på hur du kan inaktivera alla brytpunkter från konsolfönstret med hjälp av cmdleten Disable-PSBreakpoint .

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

Aktivera en brytpunkt

Om du vill aktivera en specifik brytpunkt högerklickar du på raden där du vill aktivera en brytpunkt och klickar sedan på Aktivera brytpunkt. Eller klicka på den rad där du vill aktivera en brytpunkt och tryck sedan på F9 eller klicka på Aktivera brytpunktfelsökningsmenyn. Följande skript är ett exempel på hur du kan aktivera specifika brytpunkter från konsolfönstret med hjälp av cmdleten Enable-PSBreakpoint .

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

Aktivera alla brytpunkter

Om du vill aktivera alla brytpunkter som definierats i den aktuella sessionen går du till felsökningsmenyn och klickar på Aktivera alla brytpunkter. Följande skript är ett exempel på hur du kan aktivera alla brytpunkter från konsolfönstret med hjälp av cmdleten Enable-PSBreakpoint .

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

Hantera en felsökningssession

Innan du börjar felsöka måste du ange en eller flera brytpunkter. Du kan inte ange en brytpunkt om inte skriptet som du vill felsöka har sparats. Anvisningar om hur du anger en brytpunkt finns i Hantera brytpunkter eller Set-PSBreakpoint. När du har börjat felsöka kan du inte redigera ett skript förrän du slutar felsöka. Ett skript som har en eller flera brytpunkter har angetts sparas automatiskt innan det körs.

Så här startar du felsökningen

Tryck på F5 eller klicka på ikonen Kör skript i verktygsfältet eller klicka på Kör/fortsättfelsökningsmenyn. Skriptet körs tills det påträffar den första brytpunkten. Åtgärden pausas där och den rad där den pausades markeras.

Så här fortsätter du att felsöka

Tryck på F5 eller klicka på ikonen Kör skript i verktygsfältet eller på felsökningsmenyn , klicka på Kör/fortsätt eller skriv C i konsolfönstret och tryck sedan på RETUR. Detta gör att skriptet fortsätter att köras till nästa brytpunkt eller till slutet av skriptet om inga ytterligare brytpunkter påträffas.

Så här visar du anropsstacken

Anropsstacken visar den aktuella körningsplatsen i skriptet. Om skriptet körs i en funktion som anropades av en annan funktion representeras det i visningen av ytterligare rader i utdata. Längst ned på raden visas det ursprungliga skriptet och raden där en funktion anropades. Nästa rad visar den funktionen och raden i den där en annan funktion kan ha anropats. Den översta raden visar den aktuella kontexten för den aktuella raden där brytpunkten har angetts.

När du är pausad kan du visa den aktuella anropsstacken genom att trycka på CTRL+SKIFT+D eller, på felsökningsmenyn , klicka på Visa anropsstack eller, i konsolfönstret, skriva K och sedan trycka på RETUR.

Så här stoppar du felsökning

Tryck på SKIFT+F5 eller klicka på Stoppa felsökningfelsökningsmenyn, eller skriv Q i konsolfönstret och tryck sedan på RETUR.

Stega över, stega in i och gå ut vid felsökning

Stegning är processen att köra en instruktion i taget. Du kan stoppa på en kodrad och undersöka värdena för variabler och systemets tillstånd. I följande tabell beskrivs vanliga felsökningsuppgifter, till exempel stega över, stega in och kliva ut.

Felsökningsaktivitet Description Så här gör du det i PowerShell ISE
Stega in Kör den aktuella instruktionen och stoppar sedan vid nästa instruktion. Om den aktuella instruktionen är ett funktions- eller skriptanrop stegar felsökningsprogrammet in i den funktionen eller skriptet, annars stoppas den vid nästa instruktion. Tryck på F11 eller klicka på Stega infelsökningsmenyn i konsolfönstret, skriv S och tryck på RETUR.
Stega över Kör den aktuella instruktionen och stoppar sedan vid nästa instruktion. Om den aktuella instruktionen är ett funktions- eller skriptanrop kör felsökaren hela funktionen eller skriptet och stoppar vid nästa instruktion efter funktionsanropet. Tryck på F10 eller klicka på Stega över i konsolfönstret på felsökningsmenyn, skriv V och tryck på RETUR.
Stega ut Steg ut ur den aktuella funktionen och upp en nivå om funktionen är kapslad. Om skriptet finns i huvudtexten körs det till slutet eller till nästa brytpunkt. De överhoppade -instruktionerna körs, men de stegas inte igenom. Tryck på SKIFT+F11 eller klicka på Stega utfelsökningsmenyn, eller skriv O och tryck på RETUR i konsolfönstret.
Fortsätt Fortsätter körningen till slutet eller till nästa brytpunkt. De överhoppade funktionerna och anropen körs, men går inte igenom. Tryck på F5 eller klicka på Kör/fortsättpå felsökningsmenyn eller skriv och tryck på RETUR i konsolfönstretC.

Så här visar du värdena för variabler vid felsökning

Du kan visa aktuella värden för variabler i skriptet när du går igenom koden.

Visa värdena för standardvariabler

Använd någon av följande metoder:

  • Hovra över variabeln i skriptfönstret för att visa dess värde som ett verktygstips.

  • I konsolfönstret skriver du variabelnamnet och trycker på RETUR.

Alla fönster i ISE finns alltid i samma omfång. När du felsöker ett skript körs därför de kommandon som du skriver i konsolfönstret i skriptomfånget. På så sätt kan du använda konsolfönstret för att hitta värdena för variabler och anropsfunktioner som endast definieras i skriptet.

Visa värdena för automatiska variabler

Du kan använda föregående metod för att visa värdet för nästan alla variabler när du felsöker ett skript. Dessa metoder fungerar dock inte för följande automatiska variabler.

  • $_

  • $Input

  • $MyInvocation

  • $PSBoundParameters

  • $Args

Om du försöker visa värdet för någon av dessa variabler får du värdet för variabeln för i en intern pipeline som felsökaren använder, inte värdet för variabeln i skriptet. Du kan kringgå detta för några variabler ($_, , $Input$MyInvocation, $PSBoundParametersoch $Args) med hjälp av följande metod:

  1. I skriptet tilldelar du värdet för den automatiska variabeln till en ny variabel.

  2. Visa värdet för den nya variabeln, antingen genom att hovra över den nya variabeln i skriptfönstret eller genom att skriva den nya variabeln i konsolfönstret.

Om du till exempel vill visa värdet för variabeln $MyInvocation i skriptet tilldelar du värdet till en ny variabel, till exempel $scriptName, och hovra sedan över eller skriv variabeln $scriptName för att visa dess värde.

# In C:\ps-test\MyScript.ps1
$scriptName = $MyInvocation.MyCommand.Path
# In the Console Pane:
.\MyScript.ps1
$scriptName
C:\ps-test\MyScript.ps1

Se även

Utforska Windows PowerShell ISE