hata ayıklayıcılar hakkında

Kısa açıklama

PowerShell hata ayıklayıcısını açıklar.

Uzun açıklama

Hata ayıklama, komut dosyası talimatlarındaki hataları belirlemek ve düzeltmek için bir komut dosyasını çalışırken inceleme işlemidir. PowerShell hata ayıklayıcısı betiklerinizde, işlevlerinizde, komutlarınızda, PowerShell İstenen Durum Yapılandırması (DSC) yapılandırmalarınızda veya ifadelerinizde hataları ve verimsizlikleri incelemenize ve tanımlamanıza yardımcı olabilir.

PowerShell 5.0'dan başlayarak, PowerShell hata ayıklayıcısı, uzak bilgisayarlarda konsolda veya Windows PowerShell ISE'de çalışan betiklerde, işlevlerde, komutlarda, yapılandırmalarda veya ifadelerde hata ayıklamak için güncelleştirildi. Enter-PSSession çalıştırarak, uzak bilgisayarda kesme noktaları ayarlayıp betik dosyalarının ve komutlarının hatalarını ayıklayabileceğiniz etkileşimli bir uzak PowerShell oturumu başlatabilirsiniz. Enter-PSSession İşlevsellik, uzak bir bilgisayarda komut dosyası veya komut çalıştıran bağlantısı kesilmiş bir oturuma yeniden bağlanmanıza ve bu oturuma girmenize olanak verecek şekilde güncelleştirilmiştir. Çalışan betik bir kesme noktasına isabet ederse istemci oturumunuz otomatik olarak hata ayıklayıcıyı başlatır. Bir betik çalıştıran bağlantısı kesilmiş oturum zaten bir kesme noktasına ulaştıysa ve kesme noktasında Enter-PSSession durdurulduysa, oturuma yeniden bağlandıktan sonra komut satırı hata ayıklayıcısını otomatik olarak başlatır.

Çalışırken bir PowerShell betiğini, işlevini, komutunu veya ifadesini incelemek için PowerShell hata ayıklayıcısının özelliklerini kullanabilirsiniz. PowerShell hata ayıklayıcısı, kesme noktaları ayarlamanıza, kesme noktalarını yönetmenize ve çağrı yığınını görüntülemenize olanak tanıyan bir dizi cmdlet içerir.

Hata Ayıklayıcı Cmdlet'leri

PowerShell hata ayıklayıcısı aşağıdaki cmdlet'leri içerir:

  • Set-PSBreakpoint: Satırlar, değişkenler ve komutlardaki kesme noktalarını ayarlar.
  • Get-PSBreakpoint: Geçerli oturumdaki kesme noktalarını alır.
  • Disable-PSBreakpoint: Geçerli oturumdaki kesme noktalarını kapatır.
  • Enable-PSBreakpoint: Geçerli oturumdaki kesme noktalarını yeniden etkinleştirir.
  • Remove-PSBreakpoint: Geçerli oturumdan kesme noktalarını siler.
  • Get-PSCallStack: Geçerli çağrı yığınını görüntüler.

Hata Ayıklayıcıyı Başlatma ve Durdurma

Hata ayıklayıcıyı başlatmak için bir veya daha fazla kesme noktası ayarlayın. Ardından, hata ayıklamak istediğiniz betiği, komutu veya işlevi çalıştırın.

Kesme noktasına ulaştığınızda yürütme durdurulur ve denetim hata ayıklayıcıya devredilir.

Hata ayıklayıcıyı durdurmak için, komut dosyasını, komutu veya işlevi tamamlanana kadar çalıştırın. Veya stop veya tyazın.

Hata Ayıklayıcı Komutları

PowerShell konsolunda hata ayıklayıcısını kullandığınızda, yürütmeyi denetlemek için aşağıdaki komutları kullanın. Windows PowerShell ISE'de Hata Ayıklama menüsündeki komutları kullanın.

Not: Hata ayıklayıcının diğer ana bilgisayar uygulamalarında nasıl kullanılacağı hakkında bilgi için, ana bilgisayar uygulaması belgelerine bakın.

  • s, StepInto: Sonraki deyimi yürütür ve sonra durur.

  • v, StepOver: Sonraki deyimi yürütür, ancak işlevleri ve çağrıları atlar. Atlanan deyimler yürütülür, ancak adım atlanmaz.

  • Ctrl+Break: (Tümünü ISE'de Kes) PowerShell konsolunda veya Windows PowerShell ISE'de çalışan bir betike bölün. Windows PowerShell 2.0, 3.0 ve 4.0'da Ctrl +programı kapattığını unutmayın. Tümünü Kes, hem yerel hem de uzaktan etkileşimli çalışan betiklerde çalışır.

  • o, StepOut: Geçerli işlevin dışına çıkar; iç içe yerleştirilmişse bir düzey yukarı. Ana gövdede ise, sona veya bir sonraki kesme noktasına devam eder. Atlanan deyimler yürütülür, ancak adım atlanmaz.

  • c, Continue: Betik tamamlanana kadar veya bir sonraki kesme noktasına ulaşılana kadar çalışmaya devam eder. Atlanan deyimler yürütülür, ancak adım atlanmaz.

  • l, List: Komut dosyasının yürütülmekte olan bölümünü görüntüler. Varsayılan olarak, geçerli satırı, beş önceki satırı ve sonraki 10 satırı görüntüler. Betiği listelemeye devam etmek için ENTER tuşuna basın.

  • l <m>, List: <m>tarafından belirtilen satır numarasıyla başlayan betiğin 16 satırını görüntüler.

  • l <m> <n>, List: <n>tarafından belirtilen satır numarasından başlayarak betiğin <m> satırlarını görüntüler.

  • q, Stop, Exit: Betiği yürütmeyi durdurur ve hata ayıklayıcıdan çıkar. Debug-Job cmdlet'ini çalıştırarak bir işin hatalarını ayıklarsanız, Exit komutu hata ayıklayıcıyı ayırır ve işin çalışmaya devam etmesine izin verir.

  • k, Get-PsCallStack: Geçerli çağrı yığınını görüntüler.

  • <Enter>: Step (s), StepOver (v) veya List (l) ise son komutu tekrarlar. Aksi takdirde, gönderme eylemini temsil eder.

  • ?, h: Yardım hata ayıklayıcısı komutunu görüntüler.

Hata ayıklayıcıdan çıkmak için Durdur (q) komutunu kullanabilirsiniz.

PowerShell 5.0'dan başlayarak, Debug-Job veya Debug-Runspaceçalıştırarak başlattığınız iç içe hata ayıklama oturumundan çıkmak için Exit komutunu çalıştırabilirsiniz.

Bu hata ayıklayıcı komutlarını kullanarak, bir komut dosyası çalıştırabilir, ilgili bir noktada durabilir, değişkenlerin değerlerini ve sistemin durumunu inceleyebilir ve bir sorun belirleyene kadar komut dosyasını çalıştırmaya devam edebilirsiniz.

NOT: ">" gibi bir yeniden yönlendirme işleciyle bir deyime girerseniz, PowerShell hata ayıklayıcısı betikte kalan tüm deyimlerin üzerine basar.

Kod Değişkenlerinin Değerlerini Görüntüleme

Hata ayıklayıcıdayken komut girebilir, değişkenlerin değerini görüntüleyebilir, cmdlet'leri kullanabilir ve komut satırında betikleri çalıştırabilirsiniz.

Aşağıdaki otomatik değişkenler dışında, hata ayıklanan koddaki tüm değişkenlerin geçerli değerini görüntüleyebilirsiniz:

$_
$Args
$Input
$MyInvocation
$PSBoundParameters

Bu değişkenlerden herhangi birinin değerini görüntülemeye çalışırsanız, betikteki değişkenin değeri yerine hata ayıklayıcının kullandığı bir iç işlem hattındaki değeri alırsınız.

Hata ayıklanan kod için bu değişkenlerin değerini görüntülemek için, kodda otomatik değişkenin değerini yeni bir değişkene atayın. Ardından yeni değişkenin değerini görüntüleyebilirsiniz.

Örneğin

$scriptArgs = $Args
$scriptArgs

Bu konudaki örnekte, değişkenin $MyInvocation değeri aşağıdaki gibi yeniden atanır:

$scriptname = $MyInvocation.MyCommand.Path

Hata Ayıklayıcı Ortamı

Bir kesme noktasına ulaştığınızda hata ayıklayıcı ortamına girersiniz. Komut istemi, "[DBG]:" ile başlayacak şekilde değişir.

İstemi özelleştirme hakkında daha fazla bilgi için bkz. about_Prompts.

Ayrıca, PowerShell konsolu gibi bazı ana bilgisayar uygulamalarında (ancak Windows PowerShell Tümleşik Komut Dosyası Ortamı [ISE]'da değil), hata ayıklama için iç içe bir istem açılır. komut isteminde görüntülenen yinelenen büyüktür karakterleri (ASCII 62) iç içe istemi algılayabilirsiniz.

Örneğin, PowerShell konsolundaki varsayılan hata ayıklama istemi aşağıdadır:

[DBG]: PS (get-location)>>>

$NestedPromptLevel otomatik değişkenini kullanarak iç içe yerleştirme düzeyini bulabilirsiniz.

Ayrıca, yerel kapsamda otomatik bir değişken ( $PSDebugContext) tanımlanır. Hata ayıklayıcıda olup olmadığınızı belirlemek için değişkenin $PsDebugContext varlığını kullanabilirsiniz.

Örneğin:

if ($PSDebugContext) {"Debugging"} else {"Not Debugging"}

Hata ayıklamanızda $PSDebugContext değişkeninin değerini kullanabilirsiniz.

[DBG]: PS>>> $PSDebugContext.InvocationInfo

Name   CommandLineParameters  UnboundArguments  Location
----   ---------------------  ----------------  --------
=      {}                     {}                C:\ps-test\vote.ps1 (1)

Hata Ayıklama ve Kapsam

Hata ayıklayıcıya girmek, içinde çalıştığınız kapsamı değiştirmez, ancak bir komut dosyasında bir kesme noktasına ulaştığınızda, komut dosyası kapsamına geçersiniz. Betik kapsamı, hata ayıklayıcısını çalıştırdığınız kapsamın alt öğesidir.

Betik kapsamında tanımlanan değişkenleri ve diğer adları bulmak için Get-Alias veya Get-Variable cmdlet'lerinin Scope parametresini kullanın.

Örneğin, aşağıdaki komut yerel (betik) kapsamındaki değişkenleri alır:

Get-Variable -scope 0

Komutu şu şekilde kısaltabilirsiniz:

gv -s 0

Bu, yalnızca betikte tanımladığınız ve hata ayıklama sırasında tanımladığınız değişkenleri görmenin kullanışlı bir yoludur.

Komut satırında hata ayıklama

Değişken kesme noktası veya komut kesme noktası ayarladığınızda, kesme noktasını yalnızca bir betik dosyasında ayarlayabilirsiniz. Ancak, kesme noktası varsayılan olarak geçerli oturumda çalışan herhangi bir şey üzerinde ayarlanır.

Örneğin, $name değişkeninde bir kesme noktası ayarlarsanız, kesme noktasını devre dışı bırakıncaya veya kaldırana kadar çalıştırdığınız herhangi bir betik, komut, işlev, betik cmdlet'i veya ifadedeki $name değişkende hata ayıklayıcı bozulur.

Bu, betiklerinizin oturumdaki ve kullanıcı profilindeki işlevlerden, değişkenlerden ve diğer betiklerden etkilenebileceği daha gerçekçi bir bağlamda hata ayıklamanıza olanak tanır.

Satır kesme noktaları komut dosyalarına özgüdür, bu nedenle yalnızca komut dosyalarında ayarlanır.

Hata Ayıklama İşlevleri

Begin, Processve End bölümleri olan bir işlevde kesme noktası ayarladığınızda, hata ayıklayıcı her bölümün ilk satırında kesilir.

Örneğin:

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>

Uzak Komut Dosyalarında Hata Ayıklama

PowerShell 5.0'dan başlayarak, PowerShell hata ayıklayıcısını uzak bir oturumda, konsolda veya Windows PowerShell ISE'de çalıştırabilirsiniz. Enter-PSSession İşlevsellik, uzak bir bilgisayarda çalışan ve şu anda bir komut dosyası çalıştıran bağlantısı kesilmiş bir oturuma yeniden bağlanmanıza ve bu oturuma girmenize olanak verecek şekilde güncelleştirildi. Çalışan betik bir kesme noktasına isabet ederse istemci oturumunuz otomatik olarak hata ayıklayıcıyı başlatır.

Aşağıda, 6, 11, 22 ve 25. satırlarda bir komut dosyasında ayarlanan kesme noktalarıyla bunun nasıl çalıştığını gösteren bir örnek verilmiştir. Örnekte, hata ayıklayıcı başlatıldığında, iki tanımlayıcı istem olduğunu unutmayın: oturumun çalıştığı bilgisayarın adı ve hata ayıklama modunda olduğunuzu size bildiren DBG istemi.

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>

Örnekler

Bu test komut dosyası, işletim sisteminin sürümünü algılar ve sisteme uygun bir ileti görüntüler. İşlev, işlev çağrısı ve değişken içerir.

Aşağıdaki komut, test betiği dosyasının içeriğini görüntüler:

PS C:\PS-test>  Get-Content test.ps1

function psversion {
  "PowerShell " + $PSVersionTable.PSVersion
  if ($PSVersionTable.PSVersion.Major -lt 6) {
    "Upgrade to PowerShell 6.0!"
  }
  else {
    "Have you run a background job today (start-job)?"
  }
}

$scriptName = $MyInvocation.MyCommand.Path
psversion
"Done $scriptName."

Başlamak için betiğin ilgilendiği bir noktada satır, komut, değişken veya işlev gibi bir kesme noktası ayarlayın.

Geçerli dizindeki Test.ps1 betiğinin ilk satırında bir satır kesme noktası oluşturarak başlayın.

PS C:\ps-test> Set-PSBreakpoint -line 1 -script test.ps1

Bu komutu şu şekilde kısaltabilirsiniz:

PS C:\ps-test> spb 1 -s test.ps1

Komut bir satır kesme noktası nesnesi (System.Management.Automation.LineBreakpoint) döndürür.

Column     : 0
Line       : 1
Action     :
Enabled    : True
HitCount   : 0
Id         : 0
Script     : C:\ps-test\test.ps1
ScriptName : C:\ps-test\test.ps1

Şimdi betiği başlatın.

PS C:\ps-test> .\test.ps1

Betik ilk kesme noktasına ulaştığında kesme noktası iletisi hata ayıklayıcının etkin olduğunu gösterir. Kesme noktasını açıklar ve bir işlev bildirimi olan betiğin ilk satırının önizlemesini gösterir. Komut istemi, hata ayıklayıcının denetimine sahip olduğunu gösterecek şekilde de değişir.

Önizleme satırı, betik adını ve önizlemede görüntülenen komutun satır numarasını içerir.

Entering debug mode. Use h or ? for help.

Hit Line breakpoint on 'C:\ps-test\test.ps1:1'

test.ps1:1   function psversion {
# DBG>

Betikteki ilk deyimi yürütmek ve sonraki deyimin önizlemesini görüntülemek için Step komutunu (ler) kullanın. Sonraki deyim, $MyInvocation değişkeninin değerini betik dosyasının yoluna ve dosya adına ayarlamak için $scriptName otomatik değişkenini kullanır.

DBG> s
test.ps1:11  $scriptName = $MyInvocation.MyCommand.Path

Bu noktada, $scriptName değişken doldurulmaz, ancak değişkenin değerini görüntüleyerek değerini doğrulayabilirsiniz. Bu durumda, değeri olur $null.

DBG> $scriptname
# DBG>

Geçerli deyimi yürütmek ve koddaki bir sonraki deyimi önizlemek için başka bir Step komutu kullanın. Sonraki deyim PsVersion işlevini çağırır.

DBG> s
test.ps1:12  psversion

Bu noktada, $scriptName değişkeni doldurulur, ancak değerini görüntüleyerek değişkenin değerini doğrularsınız. Bu durumda, değer betik yoluna ayarlanır.

DBG> $scriptName
C:\ps-test\test.ps1

İşlev çağrısını yürütmek için başka bir Adım komutu kullanın. ENTER tuşuna basın veya Adım için "s" yazın.

DBG> s
test.ps1:2       "PowerShell " + $PSVersionTable.PSVersion

Hata ayıklama iletisi, işlevdeki deyiminin önizlemesini içerir. Bu deyimi yürütmek ve işlevindeki sonraki deyimin önizlemesini görüntülemek için bir Step komutu kullanabilirsiniz. Ancak bu durumda StepOut komutunu (o) kullanın. İşlevin yürütülmesini (kesme noktasına ulaşmadığı sürece) tamamlar ve betikteki sonraki deyimin adımlarını uygular.

DBG> o
Windows PowerShell 2.0
Have you run a background job today (start-job)?
test.ps1:13  "Done $scriptName"

Komut dosyasındaki son deyimde olduğumuz için Step, StepOut ve Continue komutları aynı etkiye sahiptir. Bu durumda StepOut (o) kullanın.

Done C:\ps-test\test.ps1
PS C:\ps-test>

StepOut komutu son komutu yürütür. Standart komut istemi, hata ayıklayıcının çıkış yapıp komut işlemcisine denetim döndürdüğünü gösterir.

Şimdi hata ayıklayıcısını yeniden çalıştırın. İlk olarak, geçerli kesme noktasını silmek için Get-PSBreakpoint ve Remove-PSBreakpoint cmdlet'lerini kullanın. (Kesme noktasını yeniden kullanabileceğinizi düşünüyorsanız, Disable-PSBreakpointyerine Remove-PSBreakpoint cmdlet'ini kullanın.)

PS C:\ps-test> Get-PSBreakpoint| Remove-PSBreakpoint

Bu komutu şu şekilde kısaltabilirsiniz:

PS C:\ps-test> gbp | rbp

Veya aşağıdaki işlev gibi bir işlev yazarak komutunu çalıştırın:

function delbr { gbp | rbp }

Şimdi $scriptname değişkeninde bir kesme noktası oluşturun.

PS C:\ps-test> Set-PSBreakpoint -variable scriptname -script test.ps1

Komutu şu şekilde kısaltabilirsiniz:

PS C:\ps-test> sbp -v scriptname -s test.ps1

Şimdi betiği başlatın. Betik değişken kesme noktasına ulaşır. Varsayılan mod Yazma'dır, bu nedenle yürütme değişkenin değerini değiştiren deyiminden hemen önce durur.

PS C:\ps-test> .\test.ps1
Hit Variable breakpoint on 'C:\ps-test\test.ps1:$scriptName'
(Write access)

test.ps1:11  $scriptName = $MyInvocation.MyCommand.Path
# DBG>

$scriptNameolan $null değişkeninin geçerli değerini görüntüleyin.

DBG> $scriptName
# DBG>

Değişkeni dolduran deyimi yürütmek için bir Step komutu kullanın. Ardından, $scriptName değişkeninin yeni değerini görüntüleyin.

DBG> $scriptName
C:\ps-test\test.ps1
```powershell

Use a Step command (s) to preview the next statement in the script.

```powershell
DBG> s
test.ps1:12  psversion

Sonraki deyim, PsVersion işlevine yapılan bir çağrıdır. İşlevi atlamak ama yine de yürütmek için bir StepOver komutu (v) kullanın. StepOver'ı kullandığınızda zaten işlevdeyseniz, etkili değildir. İşlev çağrısı görüntülenir, ancak yürütülmez.

DBG> v
Windows PowerShell 2.0
Have you run a background job today (start-job)?
test.ps1:13  "Done $scriptName"

StepOver komutu işlevi yürütür ve koddaki bir sonraki deyimin önizlemesini yapar ve bu da son satırı yazdırır.

Hata ayıklayıcıdan çıkmak için bir Durdur komutu (t) kullanın. Komut istemi standart komut istemine geri döner.

C:\ps-test>

Kesme noktalarını silmek için Get-PSBreakpoint ve Remove-PSBreakpoint cmdlet'lerini kullanın.

PS C:\ps-test> Get-PSBreakpoint| Remove-PSBreakpoint

PsVersion işlevinde yeni bir komut kesme noktası oluşturun.

PS C:\ps-test> Set-PSBreakpoint -command psversion -script test.ps1

Bu komutu şu şekilde kısaltabilirsiniz:

PS C:\ps-test> sbp -c psversion -s test.ps1

Şimdi betiği çalıştırın.

PS C:\ps-test> .\test.ps1
Hit Command breakpoint on 'C:\ps-test\test.ps1:psversion'

test.ps1:12  psversion
# DBG>

Betik, işlev çağrısında kesme noktasına ulaşır. Bu noktada, işlev henüz çağrılmamıştır. Bu, kesme noktasının yürütülmesine ilişkin koşulları ayarlamak veya günlük başlatma ya da tanılama veya güvenlik betiği çağırma gibi hazırlık veya tanılama görevlerini gerçekleştirmek için Set-PSBreakpoint Eylem parametresini kullanma fırsatı verir.

Eylem ayarlamak için, komut dosyasından çıkmak için Devam komutunu (c) ve geçerli kesme noktasını silmek için bir Remove-PSBreakpoint komutu kullanın. (Kesme noktaları salt okunurdur, bu nedenle geçerli kesme noktasına eylem ekleyemezsiniz.)

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>

Şimdi bir eylemle yeni bir komut kesme noktası oluşturun. Aşağıdaki komut, işlev çağrıldığında $scriptName değişkeninin değerini günlüğe kaydeden bir eylemle bir komut kesme noktası ayarlar. Eylemde Break anahtar sözcüğü kullanılmadığından, yürütme durmaz. (Backtick (`) satır devamı karakteridir.)

PS C:\ps-test> Set-PSBreakpoint -command psversion -script test.ps1  `
-action { add-content "The value of `$scriptName is $scriptName." `
-path action.log}

Kesme noktası için koşullar ayarlayan eylemler de ekleyebilirsiniz. Aşağıdaki komutta, komut kesme noktası yalnızca yürütme ilkesi RemoteSigned olarak ayarlandığında yürütülür ve bu ilke betikleri çalıştırmanıza izin veren en kısıtlayıcı ilkedir. (Ters tik (`) devam karakteridir.)

PS C:\ps-test> Set-PSBreakpoint -script test.ps1 -command psversion `
-action { if ((Get-ExecutionPolicy) -eq "RemoteSigned") { break }}

Eylemdeki Break anahtar sözcüğü, hata ayıklayıcıyı kesme noktasını yürütmeye yönlendirir. Hata ayıklayıcıyı bozulmadan yürütmeye yönlendirmek için Continue anahtar sözcüğünü de kullanabilirsiniz. Varsayılan anahtar sözcük Continue olduğundan, yürütmeyi durdurmak için Break değerini belirtmeniz gerekir.

Şimdi betiği çalıştırın.

PS C:\ps-test> .\test.ps1
Hit Command breakpoint on 'C:\ps-test\test.ps1:psversion'

test.ps1:12  psversion

Yürütme ilkesi RemoteSigned olarak ayarlandığından, işlev çağrısında yürütme durdurulur.

Bu noktada, çağrı yığınını denetlemek isteyebilirsiniz. Cmdlet'i Get-PsCallStack veya Get-PsCallStack hata ayıklayıcı komutunu (k) kullanın. Aşağıdaki komut geçerli çağrı yığınını alır.

DBG> k
2: prompt
1: .\test.ps1: $args=[]
0: prompt: $args=[]

Bu örnekte, PowerShell hata ayıklayıcısını kullanmanın birkaç yolu gösterilmektedir.

Hata ayıklayıcı cmdlet'leri hakkında daha fazla bilgi için aşağıdaki komutu yazın:

help <cmdlet-name> -full

Örneğin, şunu yazın:

help Set-PSBreakpoint -full

PowerShell'deki Diğer Hata Ayıklama Özellikleri

PowerShell hata ayıklayıcısına ek olarak, PowerShell betiklerde ve işlevlerde hata ayıklamak için kullanabileceğiniz diğer birçok özellik içerir.

  • Windows PowerShell ISE, etkileşimli bir grafik hata ayıklayıcı içerir. Daha fazla bilgi için Windows PowerShell ISE'yi başlatın ve F1 tuşuna basın.

  • Set-PSDebug cmdlet'i, adımlama ve izleme dahil olmak üzere çok temel betik hata ayıklama özellikleri sunar.

  • Set-StrictMode Başlatılmamış değişkenlere yapılan başvuruları, bir nesnenin var olmayan özelliklerine yapılan başvuruları ve geçerli olmayan işlev sözdizimini algılamak için cmdlet'i kullanın.

  • Değişkenlerin değerini görüntüleyen deyimler, komut satırından girişi okuyan deyimler veya geçerli yönergeyi raporlayan deyimler gibi bir betike tanılama deyimleri ekleyin. Write-Host, Write-Debug, Write-Warningve Write-Verbosegibi bu görev için Yazma fiilini içeren cmdlet'leri kullanın.

Ayrıca bakınız