在 Windows PowerShell 指令碼中使用中斷點
「中斷點」會暫停指令碼,並提供互動式提示。 在互動式提示字元中,您可以查詢或修改變數值,然後繼續執行指令碼。 當指令碼未如預期般運作時,您會使用中斷點進行疑難排解。
在 Windows PowerShell 提示字元中,您可以使用 Set-PSBreakPoint Cmdlet 來設定斷點。 中斷點可以根據指令碼的程式碼行、所使用的特定命令,或所使用的特定變數來設定。 下列範例描述如何在指令碼的特定一行設定中斷點:
Set-PSBreakPoint -Script "MyScript.ps1" -Line 23
當您根據程式碼行設定中斷點時,在編輯指令碼時必須很小心。 當您編輯指令碼時,您可以新增或移除程式碼行,且中斷點不會影響您最初預定的相同程式碼。
下列範例描述如何設定特定命令的中斷點:
Set-PSBreakPoint -Command "Set-ADUser" -Script "MyScript.ps1"
當您根據命令設定中斷點時,可以包含萬用字元。 例如,您可以使用 *-ADUser 值來觸發 Get-ADUser、Set-ADUser、New-ADUser 和 Remove-ADUser 的斷點。
若要設定特定變數的中斷點,請執行下列動作:
Set-PSBreakPoint -Variable "computer" -Script "MyScript.ps1" -Mode ReadWrite
您可以使用變數的 -Mode 參數來識別是否要在讀取、寫入變數值或兩者時中斷。 有效值為 Read、 Write 和 ReadWrite。
Set-PSBreakPoint 的默認動作為 break,可提供互動式提示。 不過,您可以使用 -Action 參數來指定改為執行的程序代碼。 這可讓您執行複雜的作業,例如評估變數值,而且只有在值超出特定範圍時才會中斷。
注意
中斷點會儲存在記憶體中,而不是作為指令碼的一部分。 中斷點不會在多個 Windows PowerShell 提示之間共用,而且會在提示關閉時移除。
PowerShell ISE
在 Windows PowerShell 整合式指令碼環境 (ISE) 中,您可以根據這一行設定中斷點。 與中斷點相關的選項位於 [偵錯] 功能表中。 您設定為中斷點的程式碼行會醒目提示,讓您輕鬆識別它們。 此外,在 Windows PowerShell ISE 中,當您在指令碼中新增或移除程式碼行時,中斷點會以正確的行號自動更新。
Visual Studio Code
Microsoft Visual Studio Code 可讓您設定和使用中斷點搭配比 PowerShell ISE 更進階的選項。 您可以在變數超出範圍或符合特定值時,設定觸發的條件式中斷點。
變數內容的相關資訊也比較容易在 Visual Studio Code 中找到。 在觸發斷點並進入調試器後,會有一個「變數」區段顯示變數的內容,這樣您不需要逐一檢查。