Set-PSBreakPoint ile PowerShell Komut Dosyalarında Sorun Giderme


Set-PSBreakPoint cmdlet'i bir komut dosyasında bir kesme noktası ayarlar. Bir komut dosyasında sorun giderirken belirli bir adımda veya iş akışında neler olup bittiğini bilmek faydalı olabilir. Bu blog bloğunda size bir genel bakış ve komut dosyanızdaki sorunları gidermek ve araştırmak için kullanabileceğiniz temel bilgileri sunacağım. Hadi içeri girelim.

Başlangıç noktası

Bu konunun başlangıç noktası bu basit PowerShell betiğidir.

for ($i = 100; $i -ge 0; $i -= 3) { Write-Host $i }

Kısa açıklama: $i, 100'e ayarlanmıştır. Komut dosyası, $i büyük veya 0'a eşit olana kadar 100'den 3'e kadar geri sayar.

Betik, C:\Temp dizinine bir ps1 dosyası olarak kaydedilir.

Hatların Araştırılması

Artık Set-PSBreakPoint devreye giriyor.

Bir sonraki hedefimiz $i'nin 2. satırda hangi değeri döndürdüğünü bulmak. 100 döndürmesi gerekiyor. Set-PSBreakPoint ve Line parametresi ile kontrol edelim.

Set-PSBreakpoint -Script 'C:\Temp\for_5.ps1' -Line 2

Breakpoint'i ayarladıktan sonra Breakpoint'imizi harekete geçirmek için scripti başlatmamız gerekiyor.

'C:\Temp\for_5.ps1'

Vay, bir isabet var… ve isabet PowerShell ISE tarafından vurgulanıyor… ne güzel bir ekran!

Tamam, şimdi asıl hedefimize dönelim. $i'nin değeri nedir? Evet, 100.

Bir sonraki bölümde sıfırdan başlamak için SHIFT + F5 tuşlarına basarak hata ayıklayıcıyı durduruyorum ve ardından tüm PSBreakPoint'leri kaldırıyorum.

Get-PSBreakpoint | Remove-PSBreakpoint

Değişkenlerin Araştırılması

Şimdi bir adım daha ileri gideceğiz. $i 50'den küçük olduğunda $i'nin ne döndürdüğünü bilmek istediğimizi varsayalım. Bunu yapabilmek için Variable ve Action parametresini tanımlamamız gerekiyor.

Set-PSBreakpoint -Script 'C:\Temp\for_5.ps1' -Variable i -Action { if ($i -lt 50) { break } }

Güzel. Bunu açıklamam gerekiyor. Değişken parametresi i olarak ayarlanmıştır, bu aslında $i anlamına gelir. Action parametresi bir if ifadesi içerir. If ifadesi $i -lt (küçük) 50'ye ayarlanmıştır ve break ifadesi, koşul (lt 50) karşılandığında betiğin yürütülmesini durdurur.

Hadi bir deneyelim!

'C:\Temp\for_5.ps1'

Koşul karşılanırsa $i 50 değil 49 olur. Neden? Komut dosyasının 3'e kadar geri saydığını unutmayın.

Bu arada Set-PSBreakpoint ayrıca komutlar ve işlevler üzerinde kesme noktaları da ayarlayabilir.

Daha fazlası burada: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/set-psbreakpoint?view=powershell-6

İlgili makaleler