Windows PowerShell ISE’de Betiklerde Hata Ayıklama

Bu makalede, Windows PowerShell Tümleşik Betik Ortamı (ISE) görsel hata ayıklama özelliklerini kullanarak yerel bir bilgisayarda betiklerin hatalarını ayıklama açıklanmaktadır.

Kesme noktalarını yönetme

Kesme noktası, bir betikte, işlemlerin duraklatılarak değişkenlerin geçerli durumunu ve betiğinizin çalıştırıldığı ortamı inceleyebilmenizi istediğiniz belirlenmiş bir noktadır. Betiğiniz bir kesme noktası tarafından duraklatıldıktan sonra komut dosyanızın durumunu incelemek için Konsol Bölmesi'nde komut çalıştırabilirsiniz. Değişkenlerin çıktılarını alabilir veya diğer komutları çalıştırabilirsiniz. Şu anda çalışan betiğin bağlamı için görünür olan değişkenlerin değerini bile değiştirebilirsiniz. Görmek istediklerinizi inceledikten sonra betiğin çalışmasını sürdürebilirsiniz.

Windows PowerShell hata ayıklama ortamında üç tür kesme noktası ayarlayabilirsiniz:

  1. Satır kesme noktası. Betiğin işlemi sırasında belirlenen satıra ulaşıldığında betik duraklatılır

  2. Değişken kesme noktası. Belirtilen değişkenin değeri her değiştiğinde betik duraklatılır.

  3. Komut kesme noktası. Betiğin çalışması sırasında belirlenen komut çalıştırılacak olduğunda betik duraklatılır. Kesme noktasını yalnızca istediğiniz işlemle daha fazla filtrelemek için parametreler içerebilir. Komut, oluşturduğunuz bir işlev de olabilir.

Bunlardan, Windows PowerShell ISE hata ayıklama ortamında, menü veya klavye kısayolları kullanılarak yalnızca satır kesme noktaları ayarlanabilir. Diğer iki kesme noktası türü ayarlanabilir, ancak Bunlar Set-PSBreakpoint cmdlet'i kullanılarak Konsol Bölmesi'nden ayarlanır. Bu bölümde, kullanılabilir durumdaki menüleri kullanarak Windows PowerShell ISE'de hata ayıklama görevlerini gerçekleştirme ve komut dosyası kullanarak Konsol Bölmesi'nden daha geniş bir komut aralığı gerçekleştirme işlemleri açıklanmaktadır.

Kesme noktası ayarlamak için

Kesme noktası yalnızca kaydedildikten sonra betikte ayarlanabilir. Satır kesme noktası ayarlamak istediğiniz satıra sağ tıklayın ve kesme noktasını değiştir'e tıklayın. Alternatif olarak, satır kesme noktası ayarlamak istediğiniz satıra tıklayın ve F9 tuşuna basın veya Hata Ayıklama menüsünde Kesme Noktasını Değiştir'e tıklayın.

Aşağıdaki betik, Set-PSBreakpoint cmdlet'ini kullanarak Konsol Bölmesi'nden bir değişken kesme noktası ayarlama işleminin bir örneğidir.

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

Tüm kesme noktalarını listeleme

Geçerli Windows PowerShell oturumundaki tüm kesme noktalarını görüntüler.

Hata Ayıkla menüsünde Kesme Noktalarını Listele'ye tıklayın. Aşağıdaki betik, Get-PSBreakpoint cmdlet'ini kullanarak Konsol Bölmesi'nden tüm kesme noktalarını nasıl listeleyebileceğinize ilişkin bir örnektir.

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

Kesme noktasını kaldırma

Kesme noktası kaldırılarak silinir.

Daha sonra yeniden kullanmak isteyebileceğinizi düşünüyorsanız Bunun yerine Kesme Noktasını Devre Dışı Bırak seçeneğini göz önünde bulundurun. Kesme noktasını kaldırmak istediğiniz satıra sağ tıklayın ve ardından ToggleBreakpoint'e tıklayın. Ya da kesme noktasını kaldırmak istediğiniz satıra tıklayın ve Hata Ayıkla menüsünde Kesme Noktasını Değiştir'e tıklayın. Aşağıdaki betik, Remove-PSBreakpoint cmdlet'ini kullanarak Konsol Bölmesi'nden belirtilen bir kimlikle kesme noktasının nasıl kaldırılacağını gösteren bir örnektir.

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

Tüm Kesme Noktalarını Kaldır

Geçerli oturumda tanımlanan tüm kesme noktalarını kaldırmak için, Hata Ayıkla menüsünde Tüm Kesme Noktalarını Kaldır'a tıklayın.

Aşağıdaki betik, Remove-PSBreakpoint cmdlet'ini kullanarak Konsol Bölmesi'nden tüm kesme noktalarının nasıl kaldırılacağını gösteren bir örnektir.

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

Kesme Noktasını Devre Dışı Bırakma

Kesme noktasının devre dışı bırakılması, kesme noktasını kaldırmaz. Etkinleştirilene kadar kapatır. Belirli bir satır kesme noktasını devre dışı bırakmak için, kesme noktasını devre dışı bırakmak istediğiniz satıra sağ tıklayın ve kesme noktasını devre dışı bırak'a tıklayın.

Ya da kesme noktasını devre dışı bırakmak istediğiniz satıra tıklayın ve F9 tuşuna basın veya Hata Ayıklama menüsünde Kesme Noktasını Devre Dışı Bırak'a tıklayın. Aşağıdaki betik, Disable-PSBreakpoint cmdlet'ini kullanarak Konsol Bölmesi'nden belirtilen kimlikle kesme noktasını nasıl kaldırabileceğinize ilişkin bir örnektir.

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

Tüm Kesme Noktalarını Devre Dışı Bırak

Kesme noktasının devre dışı bırakılması onu kaldırmaz; etkinleştirilene kadar kapatır. Geçerli oturumdaki tüm kesme noktalarını devre dışı bırakmak için, Hata Ayıkla menüsünde Tüm Kesme Noktalarını Devre Dışı Bırak'a tıklayın. Aşağıdaki betik, Disable-PSBreakpoint cmdlet'ini kullanarak Konsol Bölmesi'nden tüm kesme noktalarını nasıl devre dışı bırakabileceğinize ilişkin bir örnektir.

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

Kesme Noktasını Etkinleştirme

Belirli bir kesme noktasını etkinleştirmek için, kesme noktasını etkinleştirmek istediğiniz satıra sağ tıklayın ve kesme noktasını etkinleştir'e tıklayın. Alternatif olarak, kesme noktasını etkinleştirmek istediğiniz satıra tıklayın ve F9 tuşuna basın veya Hata Ayıklama menüsünde Kesme Noktasını Etkinleştir'e tıklayın. Aşağıdaki betik, Enable-PSBreakpoint cmdlet'ini kullanarak Konsol Bölmesi'nden belirli kesme noktalarını nasıl etkinleştirebileceğinize ilişkin bir örnektir.

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

Tüm Kesme Noktalarını Etkinleştir

Geçerli oturumda tanımlanan tüm kesme noktalarını etkinleştirmek için, Hata Ayıkla menüsünde Tüm Kesme Noktalarını Etkinleştir'e tıklayın. Aşağıdaki betik, Enable-PSBreakpoint cmdlet'ini kullanarak Konsol Bölmesi'nden tüm kesme noktalarını nasıl etkinleştirebileceğinize ilişkin bir örnektir.

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

Hata ayıklama oturumlarını yönetme

Hata ayıklamaya başlamadan önce bir veya daha fazla kesme noktası ayarlamanız gerekir. Hata ayıklamak istediğiniz betik kaydedilmediği sürece kesme noktası ayarlayamazsınız. Kesme noktası ayarlama yönergeleri için bkz . Kesme noktalarını yönetme veya Set-PSBreakpoint. Hata ayıklamaya başladıktan sonra, hata ayıklamayı durdurana kadar bir betiği düzenleyemezsiniz. Bir veya daha fazla kesme noktası ayarlanmış bir betik, çalıştırilmeden önce otomatik olarak kaydedilir.

Hata ayıklamayı başlatmak için

F5 tuşuna basın veya araç çubuğunda Betiği Çalıştır simgesine tıklayın veya Hata Ayıkla menüsünde Çalıştır/Devam'a tıklayın. Betik, ilk kesme noktasıyla karşılaşana kadar çalışır. İşlemi orada duraklatır ve duraklatıldığı satırı vurgular.

Hata ayıklamaya devam etmek için

F5 tuşuna basın veya araç çubuğunda Betiği Çalıştır simgesine tıklayın veya Hata Ayıkla menüsünde Çalıştır/Devam'a tıklayın veya Konsol Bölmesi'nde yazın C ve ENTER tuşuna basın. Bu, betiğin sonraki kesme noktasına veya başka kesme noktasıyla karşılaşılmadıysa betiğin sonuna kadar çalışmaya devam etmelerine neden olur.

Çağrı yığınını görüntülemek için

Çağrı yığını, betikteki geçerli çalıştırma konumunu görüntüler. Betik farklı bir işlev tarafından çağrılan bir işlevde çalışıyorsa, bu çıktıdaki ek satırlar tarafından görüntüde gösterilir. En alttaki satır, özgün betiği ve içinde bir işlevin çağrıldığı satırı görüntüler. Sonraki satırda bu işlev ve içinde başka bir işlevin çağrılmış olabileceği satır gösterilir. En üstteki satır, kesme noktasının ayarlandığı geçerli satırın geçerli bağlamını gösterir.

Duraklatılmış durumdayken, geçerli çağrı yığınını görmek için CTRL+SHIFT+D tuşlarına basın veya Hata Ayıklama menüsünde Çağrı Yığınını Görüntüle'ye tıklayın veya Konsol Bölmesi'nde yazın K ve ENTER tuşuna basın.

Hata ayıklamayı durdurmak için

SHIFT+F5 tuşuna basın veya Hata Ayıkla menüsünde Hata Ayıklayıcıyı Durdur'a tıklayın veya Konsol Bölmesi'nde yazın Q ve ENTER tuşuna basın.

Hata ayıklama sırasında adımlama, adımlama ve dışarı çıkma

Adımlama, bir kerede bir deyimi çalıştırma işlemidir. Bir kod satırında durabilir ve değişkenlerin değerlerini ve sistemin durumunu inceleyebilirsiniz. Aşağıdaki tabloda, atlama, içine girme ve dışarı çıkma gibi yaygın hata ayıklama görevleri açıklanmaktadır.

Hata Ayıklama Görevi Açıklama PowerShell ISE'de bunu gerçekleştirme
Adımla Geçerli deyimini yürütür ve sonraki deyimde durur. Geçerli deyim bir işlev veya betik çağrısıysa, hata ayıklayıcı bu işleve veya betiğin içine girer, aksi takdirde sonraki deyimde durur. F11 tuşuna basın veya Hata Ayıkla menüsünde, Adımla'ya tıklayın veya Konsol Bölmesi'nde yazın S ve ENTER tuşuna basın.
AdımLa Geçerli deyimini yürütür ve sonraki deyimde durur. Geçerli deyim bir işlev veya betik çağrısıysa, hata ayıklayıcı işlevin veya betiğin tamamını yürütür ve işlev çağrısından sonraki deyimde durur. F10 tuşuna basın veya Hata Ayıkla menüsünde, Üzerine Gel'e tıklayın veya Konsol Bölmesi'nde yazın V ve ENTER tuşuna basın.
Dışarı Adımla İşlev iç içe yerleştirilmişse geçerli işlevin dışına ve bir düzey yukarı doğru ilerler. Ana gövdede ise, betik sonuna veya sonraki kesme noktasına yürütülür. Atlanan deyimler yürütülür, ancak adım atlanmaz. SHIFT+F11 tuşuna basın veya Hata Ayıkla menüsünde, Dışarı Adımla'ya tıklayın veya Konsol Bölmesi'nde yazın O ve ENTER tuşuna basın.
Continue Yürütmeyi sonuna kadar veya sonraki kesme noktasına devam eder. Atlanan işlevler ve çağrılar yürütülür, ancak adım atlanmaz. F5 tuşuna basın veya Hata Ayıkla menüsünde Çalıştır/Devam'a tıklayın veya Konsol Bölmesi'nde yazın C ve ENTER tuşuna basın.

Hata ayıklama sırasında değişkenlerin değerlerini görüntüleme

Kodda ilerledikçe betikte değişkenlerin geçerli değerlerini görüntüleyebilirsiniz.

Standart değişkenlerin değerlerini görüntülemek için

Aşağıdaki yöntemlerden birini kullanın:

  • Betik Bölmesi'nde, değerini araç ipucu olarak görüntülemek için değişkenin üzerine gelin.

  • Konsol Bölmesi'nde değişken adını yazın ve ENTER tuşuna basın.

ISE'deki tüm bölmeler her zaman aynı kapsamdadır. Bu nedenle, bir betikte hata ayıklarken, Konsol Bölmesi'ne yazdığınız komutlar betik kapsamında çalışır. Bu, yalnızca betikte tanımlanan değişkenlerin ve çağrı işlevlerinin değerlerini bulmak için Konsol Bölmesi'ni kullanmanıza olanak tanır.

Otomatik değişkenlerin değerlerini görüntülemek için

Bir betikte hata ayıklarken neredeyse tüm değişkenlerin değerini görüntülemek için önceki yöntemi kullanabilirsiniz. Ancak, bu yöntemler aşağıdaki otomatik değişkenler için çalışmaz.

  • $_

  • $Input

  • $MyInvocation

  • $PSBoundParameters

  • $Args

Bu değişkenlerden herhangi birinin değerini görüntülemeye çalışırsanız, bu değişkenin değerini betikteki değişkenin değerini değil hata ayıklayıcının kullandığı bir iç işlem hattında alırsınız. Aşağıdaki yöntemi kullanarak birkaç değişken ($_, $Input, $MyInvocation, $PSBoundParametersve $Args) için bu sorunu çözebilirsiniz:

  1. Betikte, otomatik değişkenin değerini yeni bir değişkene atayın.

  2. Betik Bölmesi'nde yeni değişkenin üzerine gelerek veya konsol bölmesine yeni değişkeni yazarak yeni değişkenin değerini görüntüleyin.

Örneğin, değişkenin $MyInvocation değerini görüntülemek için betikte değeri gibi $scriptNameyeni bir değişkene atayın ve değerini görüntülemek için değişkenin $scriptName üzerine gelin veya değişkeni yazın.

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

Ayrıca bkz:

Windows PowerShell ISE’yi Keşfetme