about_Debuggers
Kort beskrivning
Beskriver PowerShell-felsökningsprogrammet.
Lång beskrivning
Felsökning är processen att undersöka ett skript medan det körs för att identifiera och korrigera fel i skriptinstruktionerna. PowerShell-felsökningsprogrammet kan hjälpa dig att undersöka och identifiera fel och ineffektivitet i dina skript, funktioner, kommandon, DSC-konfigurationer (PowerShell Desired State Configuration) eller uttryck.
Från och med PowerShell 5.0 har PowerShell-felsökningsprogrammet uppdaterats för att felsöka skript, funktioner, kommandon, konfigurationer eller uttryck som körs i antingen konsolen eller Windows PowerShell Integrated Scripting Environment (ISE) på fjärrdatorer.
Kommentar
Windows PowerShell ISE stöder endast Windows PowerShell. För PowerShell 6 och senare måste du använda Visual Studio Code med tillägget för PowerShell. Mer information finns i Felsökning med Visual Studio Code.
Cmdletar för felsökningsprogram
PowerShell-felsökningsprogrammet innehåller följande uppsättning cmdletar:
Set-PSBreakpoint
: Anger brytpunkter på linjer, variabler och kommandon.Get-PSBreakpoint
: Hämtar brytpunkter i den aktuella sessionen.Disable-PSBreakpoint
: Inaktiverar brytpunkter i den aktuella sessionen.Enable-PSBreakpoint
: Återaktivering av brytpunkter i den aktuella sessionen.Remove-PSBreakpoint
: Tar bort brytpunkter från den aktuella sessionen.Get-PSCallStack
: Visar den aktuella anropsstacken.
Starta och stoppa felsökningsprogrammet
Starta felsökningsprogrammet genom att ange en eller flera brytpunkter och sedan köra skriptet, kommandot eller funktionen som du vill felsöka.
När du når en brytpunkt stoppas körningen och kontrollen överförs till felsökningsprogrammet.
Om du vill stoppa felsökningsprogrammet kör du skriptet, kommandot eller funktionen tills den är klar.
Eller skriv stop
eller t
.
Felsökningskommandon
När du använder felsökningsprogrammet i PowerShell-konsolen använder du följande kommandon för att styra körningen. I Windows PowerShell ISE använder du kommandon på felsökningsmenyn.
Kommentar
Information om hur du använder felsökningsprogrammet i andra värdprogram finns i dokumentationen för värdprogrammet.
s
,StepInto
: Kör nästa instruktion och stoppar sedan.v
,StepOver
: Kör nästa instruktion, men hoppar över funktioner och anrop. De överhoppade uttrycken körs, men går inte igenom.Ctrl+Break
: (Break All in ISE) Delar upp ett skript som körs i PowerShell-konsolen eller Windows PowerShell ISE. Observera att Ctrl+Break in Windows PowerShell 2.0, 3.0 och 4.0 stänger programmet. Break All fungerar på både lokala och fjärranslutna skript som körs interaktivt.o
,StepOut
: Steg ut ur den aktuella funktionen, upp en nivå om kapslad. Om den finns i huvudtexten fortsätter den till slutet eller nästa brytpunkt. De överhoppade uttrycken körs, men går inte igenom.c
,Continue
: Fortsätter att köras tills skriptet är klart eller tills nästa brytpunkt har nåtts. De överhoppade uttrycken körs, men går inte igenom.l
,List
: Visar den del av skriptet som körs. Som standard visas den aktuella raden, fem föregående rader och 10 efterföljande rader. Tryck på RETUR om du vill fortsätta lista skriptet.l <m>
,List
: Visar 16 rader i skriptet som börjar med det radnummer som anges av<m>
.l <m> <n>
,List
: Visar<n>
rader i skriptet, som börjar med det radnummer som anges av<m>
.q
,Stop
,Exit
: Slutar köra skriptet och avslutar felsökningsprogrammet. Om du felsöker ett jobb genom att köra cmdletenDebug-Job
Exit
kopplar kommandot från felsökningsprogrammet och tillåter att jobbet fortsätter att köras.k
,Get-PsCallStack
: Visar den aktuella anropsstacken.<Enter>
: Upprepar det sista kommandot om det varStep
(s
),StepOver
(v
) ellerList
(l
). Annars representerar en skicka-åtgärd.?
,h
: Visar felsökningskommandot Hjälp.
Om du vill avsluta felsökningsprogrammet kan du använda Stop
(q
).
Från och med PowerShell 5.0 kan du köra kommandot Avsluta för att avsluta en kapslad felsökningssession som du startade genom att köra antingen Debug-Job
eller Debug-Runspace
.
Med hjälp av dessa felsökningskommandon kan du köra ett skript, stoppa på en punkt, undersöka värdena för variabler och systemets tillstånd och fortsätta köra skriptet tills du har identifierat ett problem.
Kommentar
Om du går in i en instruktion med en omdirigeringsoperator, till exempel >
, stegar PowerShell-felsökningsprogrammet över alla återstående instruktioner i skriptet.
Visa värdena för skriptvariabler
När du är i felsökningsprogrammet kan du också ange kommandon, visa värdet för variabler, använda cmdletar och köra skript på kommandoraden. Du kan visa det aktuella värdet för alla variabler i skriptet som debuggas, förutom följande automatiska variabler:
$_
$Args
$Input
$MyInvocation
$PSBoundParameters
När du visar värdet för någon av dessa variabler får du värdet för variabeln för en intern pipeline som felsökningsprogrammet använder, inte värdet för variabeln i skriptet.
Om du vill visa värdet för de här variablerna för skriptet som debuggas lägger du till rader i skriptet för att spara dessa värden i en ny variabel. Ange brytpunkten efter dessa nya rader. Sedan kan du visa värdet för den nya variabeln.
Ett exempel:
$scriptArgs = $Args
$scriptname = $MyInvocation.PSCommandPath
Felsökningsmiljön
När du når en brytpunkt anger du felsökningsmiljön. Kommandotolken ändras så att den börjar med "[DBG]:". I vissa värdprogram, till exempel PowerShell-konsolen, öppnas även en kapslad fråga för felsökning. Du kan identifiera den kapslade prompten genom att upprepa fler än tecken (ASCII 62) som visas i kommandotolken.
Mer information om hur du anpassar prompten finns i about_Prompts.
Du hittar kapslingsnivån med hjälp av den $NestedPromptLevel
automatiska variabeln. Den automatiska variabeln , $PSDebugContext
definieras i det lokala omfånget. Du kan använda förekomsten av variabeln $PSDebugContext
för att avgöra om du kör i felsökningsprogrammet.
Till exempel:
if ($PSDebugContext) {"Debugging"} else {"Not Debugging"}
Du kan använda värdet för variabeln $PSDebugContext
i felsökningen.
[DBG]: PS>>> $PSDebugContext.InvocationInfo
Name CommandLineParameters UnboundArguments Location
---- --------------------- ---------------- --------
= {} {} C:\ps-test\vote.ps1 (1)
Felsökning och omfång
Att bryta sig in i felsökningsprogrammet ändrar inte omfånget som du använder, men när du når en brytpunkt i ett skript går du till skriptomfånget. Skriptomfånget är underordnat det omfång där du körde felsökningsprogrammet.
Om du vill hitta variabler och alias som definieras i skriptomfånget använder du parametern Omfång för Get-Alias
cmdletarna eller Get-Variable
.
Följande kommando hämtar till exempel variablerna i det lokala omfånget (skript):
Get-Variable -scope 0
Det här är ett användbart sätt att bara se de variabler som du definierade i skriptet och som du definierade vid felsökning.
Felsökning på kommandoraden
När du anger en variabel brytpunkt eller en kommandobrytpunkt kan du endast ange brytpunkten i en skriptfil. Men som standard är brytpunkten inställd på allt som körs i den aktuella sessionen.
Om du till exempel anger en brytpunkt för variabeln $name
bryts felsökaren på valfri $name
variabel i alla skript, kommandon, funktioner, skript-cmdletar eller uttryck som du kör tills du inaktiverar eller tar bort brytpunkten.
På så sätt kan du felsöka dina skript i en mer realistisk kontext där de kan påverkas av funktioner, variabler och andra skript i sessionen och i användarens profil.
Radbrytningspunkter är specifika för skriptfiler, så de anges endast i skriptfiler.
Felsöka arbetsflöden
Felsökningsprogrammet kan användas för att felsöka PowerShell-arbetsflöden, antingen i PowerShell-konsolen eller i Windows PowerShell ISE. Det finns vissa begränsningar med att använda PowerShell-felsökningsprogrammet för att felsöka arbetsflöden.
- Du kan visa arbetsflödesvariabler när du är i felsökningsprogrammet, men det går inte att ange arbetsflödesvariabler inifrån felsökningsprogrammet.
- Tabbavslut när det stoppas i arbetsflödets felsökningsprogram är inte tillgängligt.
- Felsökning av arbetsflöden fungerar endast med synkron körning av arbetsflöden från ett PowerShell-skript. Du kan inte felsöka arbetsflöden om de körs som ett jobb (med parametern AsJob ).
- Andra kapslade felsökningsscenarier, till exempel ett arbetsflöde som anropar ett annat arbetsflöde eller ett arbetsflöde som anropar ett skript, implementeras inte.
I följande exempel visas felsökning av ett arbetsflöde. När felsökningsprogrammet kliver in i arbetsflödesfunktionen ändras felsökningsprompten till [WFDBG]
.
PS C:> Set-PSBreakpoint -Script C:\TestWFDemo1.ps1 -Line 8
ID Script Line Command Variable Action
-- ------ ---- ------- -------- ------
0 TestWFDemo1.ps1 8
PS C:> C:\TestWFDemo1.ps1
Entering debug mode. Use h or ? for help.
Hit Line breakpoint on 'C:\TestWFDemo1.ps1:8'
At C:\TestWFDemo1.ps1:8 char:5
+ Write-Output -InputObject "Now writing output:"
# ~~~~~
[WFDBG:localhost]: PS C:>> list
# 3:
4: workflow SampleWorkflowTest
5: {
6: param ($MyOutput)
# 7:
8:* Write-Output -InputObject "Now writing output:"
9: Write-Output -Input $MyOutput
# 10:
11: Write-Output -InputObject "Get PowerShell process:"
12: Get-Process -Name powershell
# 13:
14: Write-Output -InputObject "Workflow function complete."
15: }
# 16:
17: # Call workflow function
18: SampleWorkflowTest -MyOutput "Hello"
[WFDBG:localhost]: PS C:>> $MyOutput
Hello
[WFDBG:localhost]: PS C:>> stepOver
Now writing output:
At C:\TestWFDemo1.ps1:9 char:5
+ Write-Output -Input $MyOutput
# +!INCLUDE[]~
[WFDBG:localhost]: PS C:>> list
4: workflow SampleWorkflowTest
5: {
6: param ($MyOutput)
# 7:
8: Write-Output -InputObject "Now writing output:"
9:* Write-Output -Input $MyOutput
# 10:
11: Write-Output -InputObject "Get PowerShell process:"
12: Get-Process -Name powershell
# 13:
14: Write-Output -InputObject "Workflow function complete."
15: }
# 16:
17: # Call workflow function
18: SampleWorkflowTest -MyOutput "Hello"
# 19:
[WFDBG:localhost]: PS C:>> stepOver
Hello
At C:\TestWFDemo1.ps1:11 char:5
+ Write-Output -InputObject "Get PowerShell process:"
# +!INCLUDE[]~~~~~~~~~
[WFDBG:localhost]: PS C:>> stepOut
Get PowerShell process:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
433 35 106688 128392 726 2.67 7124 powershell
499 44 134244 172096 787 2.79 7452 powershell
Workflow function complete.
Felsökningsfunktioner
När du anger en brytpunkt för en funktion som har begin
, process
och end
avsnitt, bryts felsökningsprogrammet på den första raden i varje avsnitt.
Till exempel:
function test-cmdlet {
begin {
write-output "Begin"
}
process {
write-output "Process"
}
end {
write-output "End"
}
}
C:\PS> Set-PSBreakpoint -command test-cmdlet
C:\PS> test-cmdlet
Begin
Entering debug mode. Use h or ? for help.
Hit Command breakpoint on 'prompt:test-cmdlet'
test-cmdlet
[DBG]: C:\PS> c
Process
Entering debug mode. Use h or ? for help.
Hit Command breakpoint on 'prompt:test-cmdlet'
test-cmdlet
[DBG]: C:\PS> c
End
Entering debug mode. Use h or ? for help.
Hit Command breakpoint on 'prompt:test-cmdlet'
test-cmdlet
[DBG]: C:\PS>
Felsöka fjärrskript
Du kan köra Enter-PSSession
för att starta en interaktiv PowerShell-fjärrsession där du kan ange brytpunkter och felsöka skriptfiler och kommandon på fjärrdatorn. Enter-PSSession
låter dig återansluta en frånkopplad session som kör ett skript eller kommando på en fjärrdator. Om skriptet som körs träffar en brytpunkt startar klientsessionen automatiskt felsökningsprogrammet. Om den frånkopplade sessionen som kör ett skript redan har nått en brytpunkt Enter-PSSession
startar kommandoradsfelsökaren automatiskt när du återansluter till sessionen.
I följande exempel visas hur detta fungerar. Brytpunkter har angetts till raderna 6, 11, 22 och 25 i skriptet. När felsökningsprogrammet startar finns det två identifierande ändringar i prompten:
- Namnet på den dator där sessionen körs
- DBG-prompten som låter dig veta att du är i felsökningsläge
Enter-PSSession -Cn localhost
[localhost]: PS C:\psscripts> Set-PSBreakpoint .\ttest19.ps1 6,11,22,25
ID Script Line Command Variable Action
-- ------ ---- ------- -------- ------
0 ttest19.ps1 6
1 ttest19.ps1 11
2 ttest19.ps1 22
3 ttest19.ps1 25
[localhost]: PS C:\psscripts> .\ttest19.ps1
Hit Line breakpoint on 'C:\psscripts\ttest19.ps1:11'
At C:\psscripts\ttest19.ps1:11 char:1
+ $winRMName = "WinRM"
# + ~
[localhost]: [DBG]: PS C:\psscripts>> list
6: 1..5 | foreach { sleep 1; Write-Output "hello2day $_" }
7: }
# 8:
9: $count = 10
10: $psName = "PowerShell"
11:* $winRMName = "WinRM"
12: $myVar = 102
# 13:
14: for ($i=0; $i -lt $count; $i++)
15: {
16: sleep 1
17: Write-Output "Loop iteration is: $i"
18: Write-Output "MyVar is $myVar"
# 19:
20: hello2day
# 21:
[localhost]: [DBG]: PS C:\psscripts>> stepover
At C:\psscripts\ttest19.ps1:12 char:1
+ $myVar = 102
# + ~
[localhost]: [DBG]: PS C:\psscripts>> quit
[localhost]: PS C:\psscripts> Exit-PSSession
PS C:\psscripts>
Exempel
Det här testskriptet identifierar versionen av PowerShell och visar ett versionsanpassat meddelande. Den innehåller en funktion, ett funktionsanrop och en variabel.
Följande kommando visar innehållet i testskriptfilen:
PS C:\PS-test> Get-Content test.ps1
function psversion {
"PowerShell " + $PSVersionTable.PSVersion
if ($PSVersionTable.PSVersion.Major -lt 7) {
"Upgrade to PowerShell 7!"
}
else {
"Have you run a background job today (start-job)?"
}
}
$scriptName = $MyInvocation.PSCommandPath
psversion
"Done $scriptName."
Börja genom att ange en brytpunkt vid en intressepunkt i skriptet, till exempel en rad, ett kommando, en variabel eller en funktion.
Börja med att skapa en radbrytningspunkt på den första raden i Test.ps1-skriptet i den aktuella katalogen.
PS C:\ps-test> Set-PSBreakpoint -line 1 -script test.ps1
Kommandot returnerar ett System.Management.Automation.LineBreakpoint-objekt .
Column : 0
Line : 1
Action :
Enabled : True
HitCount : 0
Id : 0
Script : C:\ps-test\test.ps1
ScriptName : C:\ps-test\test.ps1
Starta nu skriptet.
PS C:\ps-test> .\test.ps1
När skriptet når den första brytpunkten anger brytpunktsmeddelandet att felsökningsprogrammet är aktivt. Den beskriver brytpunkten och förhandsgranskar den första raden i skriptet, som är en funktionsdeklaration. Kommandotolken ändras också för att indikera att felsökaren har kontroll.
Förhandsgranskningsraden innehåller skriptnamnet och radnumret för det förhandsgranskade kommandot.
Entering debug mode. Use h or ? for help.
Hit Line breakpoint on 'C:\ps-test\test.ps1:1'
test.ps1:1 function psversion {
DBG>
Använd kommandot Step (s) för att köra den första instruktionen i skriptet och för att förhandsgranska nästa instruktion. Nästa instruktion använder den $MyInvocation
automatiska variabeln för att ange värdet för variabeln $scriptName
till sökvägen och filnamnet för skriptfilen.
DBG> s
test.ps1:11 $scriptName = $MyInvocation.PSCommandPath
I det här läget är variabeln $scriptName
inte ifylld, men du kan verifiera värdet för variabeln genom att visa dess värde. I det här fallet är $null
värdet .
DBG> $scriptname
DBG>
Använd ett annat Step
kommando (s
) för att köra den aktuella instruktionen och för att förhandsgranska nästa instruktion i skriptet. Nästa instruktion anropar psversion
funktionen.
DBG> s
test.ps1:12 psversion
I det här läget fylls variabeln $scriptName
i, men du verifierar värdet för variabeln genom att visa dess värde. I det här fallet är värdet inställt på skriptsökvägen.
DBG> $scriptName
C:\ps-test\test.ps1
Använd ett annat Steg-kommando för att köra funktionsanropet. Tryck på RETUR eller skriv "s" för Steg.
DBG> s
test.ps1:2 "PowerShell " + $PSVersionTable.PSVersion
Felsökningsmeddelandet innehåller en förhandsversion av -instruktionen i funktionen. Om du vill köra den här instruktionen och förhandsgranska nästa instruktion i funktionen kan du använda ett Step
kommando. Men i det här fallet använder du ett StepOut-kommando (o). Den slutför körningen av funktionen (såvida den inte når en brytpunkt) och steg till nästa instruktion i skriptet.
DBG> o
Windows PowerShell 2.0
Have you run a background job today (start-job)?
test.ps1:13 "Done $scriptName"
Eftersom vi använder den sista instruktionen i skriptet har kommandona Step, StepOut och Continue samma effekt. I det här fallet använder du StepOut (o).
Done C:\ps-test\test.ps1
PS C:\ps-test>
Kommandot StepOut kör det sista kommandot. Standardkommandoprompten anger att felsökningsprogrammet har avslutat och returnerat kontrollen till kommandoprocessorn.
Kör felsökningsprogrammet igen. Börja med att ta bort den aktuella brytpunkten genom att Get-PsBreakpoint
använda cmdletarna och Remove-PsBreakpoint
. (Om du tror att du kan återanvända brytpunkten använder du cmdleten Disable-PsBreakpoint
i stället Remove-PsBreakpoint
för .)
PS C:\ps-test> Get-PSBreakpoint| Remove-PSBreakpoint
Du kan förkorta det här kommandot som:
PS C:\ps-test> gbp | rbp
Du kan också köra kommandot genom att skriva en funktion, till exempel följande funktion:
function delbr { gbp | rbp }
Skapa nu en brytpunkt för variabeln $scriptname
.
PS C:\ps-test> Set-PSBreakpoint -variable scriptname -script test.ps1
Du kan förkorta kommandot som:
PS C:\ps-test> sbp -v scriptname -s test.ps1
Starta nu skriptet. Skriptet når variabelns brytpunkt. Standardläget är Skriv, så körningen stoppas precis före instruktionen som ändrar värdet för variabeln.
PS C:\ps-test> .\test.ps1
Hit Variable breakpoint on 'C:\ps-test\test.ps1:$scriptName'
(Write access)
test.ps1:11 $scriptName = $MyInvocation.PSCommandPath
DBG>
Visa det aktuella värdet för variabeln $scriptName
, som är $null
.
DBG> $scriptName
DBG>
Använd ett Step
kommando (s
) för att köra -instruktionen som fyller variabeln. Visa sedan variabelns $scriptName
nya värde.
DBG> $scriptName
C:\ps-test\test.ps1
Använd ett stegkommando (s) för att förhandsgranska nästa instruktion i skriptet.
DBG> s
test.ps1:12 psversion
Nästa instruktion är ett anrop till psversion
funktionen. Om du vill hoppa över funktionen men ändå köra den använder du ett StepOver
kommando (v
). Om du redan är i funktionen när du använder StepOver
är den inte effektiv. Funktionsanropet visas, men det körs inte.
DBG> v
Windows PowerShell 2.0
Have you run a background job today (start-job)?
test.ps1:13 "Done $scriptName"
Kommandot StepOver
kör funktionen och förhandsgranskar nästa instruktion i skriptet, som skriver ut den sista raden.
Använd ett Stop
kommando (t
) för att avsluta felsökningsprogrammet. Kommandotolken återgår till standardkommandoprompten.
C:\ps-test>
Om du vill ta bort brytpunkterna använder du Get-PsBreakpoint
cmdletarna och Remove-PsBreakpoint
.
PS C:\ps-test> Get-PSBreakpoint| Remove-PSBreakpoint
Skapa en ny kommandobrytpunkt för psversion
funktionen.
PS C:\ps-test> Set-PSBreakpoint -command psversion -script test.ps1
Du kan förkorta det här kommandot till:
PS C:\ps-test> sbp -c psversion -s test.ps1
Kör skriptet nu.
PS C:\ps-test> .\test.ps1
Hit Command breakpoint on 'C:\ps-test\test.ps1:psversion'
test.ps1:12 psversion
DBG>
Skriptet når brytpunkten vid funktionsanropet. I det här läget har funktionen ännu inte anropats. Detta ger dig möjlighet att använda åtgärdsparametern Set-PSBreakpoint
för för att ange villkor för körning av brytpunkten eller utföra förberedande eller diagnostiska uppgifter, till exempel att starta en logg eller anropa ett diagnostik- eller säkerhetsskript.
Om du vill ange en åtgärd använder du kommandot Fortsätt (c) för att avsluta skriptet och ett Remove-PsBreakpoint
kommando för att ta bort den aktuella brytpunkten. (Brytpunkter är skrivskyddade, så du kan inte lägga till en åtgärd i den aktuella brytpunkten.)
DBG> c
Windows PowerShell 2.0
Have you run a background job today (start-job)?
Done C:\ps-test\test.ps1
PS C:\ps-test> Get-PSBreakpoint| Remove-PSBreakpoint
PS C:\ps-test>
Skapa nu en ny kommandobrytpunkt med en åtgärd. Följande kommando anger en kommandobrytpunkt med en åtgärd som loggar värdet för variabeln $scriptName
när funktionen anropas. Eftersom nyckelordet break
inte används i åtgärden stoppas inte körningen. Backticken (`
) är linjefortsättningstecknet.
PS C:\ps-test> Set-PSBreakpoint -command psversion -script test.ps1 `
-action { add-content "The value of `$scriptName is $scriptName." `
-path action.log}
Du kan också lägga till åtgärder som anger villkor för brytpunkten. I följande kommando körs kommandobrytpunkten endast om körningsprincipen är inställd på RemoteSigned, den mest restriktiva princip som fortfarande tillåter att du kör skript.
PS C:\ps-test> Set-PSBreakpoint -script test.ps1 -command psversion `
-action { if ((Get-ExecutionPolicy) -eq "RemoteSigned") { break }}
Nyckelordet break
i åtgärden dirigerar felsökningsprogrammet att köra brytpunkten. Du kan också använda nyckelordet continue
för att dirigera felsökningsprogrammet att köra utan att bryta. Eftersom standardnyckelordet är continue
måste du ange break
för att stoppa körningen.
Kör skriptet nu.
PS C:\ps-test> .\test.ps1
Hit Command breakpoint on 'C:\ps-test\test.ps1:psversion'
test.ps1:12 psversion
Eftersom körningsprincipen är inställd på RemoteSigned stoppas körningen vid funktionsanropet.
Nu kanske du vill kontrollera anropsstacken. Använd cmdleten Get-PsCallStack
eller felsökningskommandot Get-PsCallStack
(k
). Följande kommando hämtar den aktuella anropsstacken.
DBG> k
2: prompt
1: .\test.ps1: $args=[]
0: prompt: $args=[]
Det här exemplet visar bara några av de många sätten att använda PowerShell-felsökningsprogrammet.
Andra felsökningsfunktioner i PowerShell
Förutom PowerShell-felsökningsprogrammet innehåller PowerShell flera andra funktioner som du kan använda för att felsöka skript och funktioner.
Cmdleten
Set-PSDebug
erbjuder mycket grundläggande funktioner för felsökning av skript, inklusive steg- och spårning.Använd cmdleten
Set-StrictMode
för att identifiera referenser till onitialiserade variabler, referenser till icke-existerande egenskaper för ett objekt och för att funktionssyntax som inte är giltig.Lägg till diagnostikinstruktioner i ett skript, till exempel instruktioner som visar värdet för variabler, instruktioner som läser indata från kommandoraden eller instruktioner som rapporterar den aktuella instruktionen. Använd de cmdletar som innehåller skrivverb för den här uppgiften, till exempel
Write-Host
,Write-Debug
,Write-Warning
ochWrite-Verbose
.