適用于PowerShell 3.0或者更高版本!
PowerShell ISE只支持行斷點(diǎn):它可以讓腳本運(yùn)行至特定的調(diào)試行:你可以按F9來添加或者移除斷點(diǎn)。但是需要保證該腳本已經(jīng)保存過(默認(rèn)的無標(biāo)題文件可能就不行)。
還有一種更加高級的方法:動態(tài)斷點(diǎn)或者說是條件斷點(diǎn),其中沒有特別限定某行,而是限定于一種特定的場景。比如下面的的示例腳本,每當(dāng)PowerShell給指定的變量賦值時(shí),就會擊中斷點(diǎn)停下來:
復(fù)制代碼 代碼如下:
$bp = Set-PSBreakpoint -Variable a -Mode Write -Script $psise.CurrentFile.FullPath
$a = 1
$a
$a
$a = 200
$a
Remove-PSBreakpoint -Breakpoint $bp
你還可以綁定更加高級和復(fù)雜的條件,比如你想當(dāng)一個(gè)大于100的整數(shù)賦值給$a時(shí),擊中斷點(diǎn):
復(fù)制代碼 代碼如下:
$Condition = { if ($a -is [Int] -and $a -gt 100) { break } }
$bp = Set-PSBreakpoint -Variable a -Mode Write -Script $psise.CurrentFile.FullPath -Action $Condition
$a = 1
$a
$a
$a = 200
$a
Remove-PSBreakpoint -Breakpoint $bp
荔非苔注:條件斷點(diǎn)這個(gè)技巧比較冷門,但是一旦需要時(shí)卻非常方便,比如我在某個(gè)稍微大點(diǎn)的腳本文件中多次給變量A賦值,可是不知某次賦了個(gè)錯(cuò)誤的值,我想把這行代碼找出來。如果沒有條件斷點(diǎn),我可能得關(guān)鍵字搜索出所有變量A的賦值語句,并打上斷點(diǎn),工程浩大,而如果使用條件斷點(diǎn),阿彌陀佛!