Powershell 断点执行 3


在脚本和函数中使用断点停止脚本执行,方便调试Powershell脚本的异常和错误。如果逻辑不是很复杂,直接输出一些帮助信息,也可以实现调试的目的。最简单的使用调试输出命令,如果你在控制台输入:

Write-Debug “输出一行调试信息,看看发生了神马?”

你可能会很奇怪,命令没有输出任何信息,感觉好像没做什么。事实上,Write-debug 的行为受$DebugPreference的影响,$DebugPreference值默认为”SilentlyContinue”,此时Write-debug不会输出任何信息。

$DebugPreference可选的配置如下:

SilentlyContinue:调试关闭

Stop:输出调试信息,终止脚本执行

Continue:输出调试信息,继续执行脚本

Inquire:输出调试信息,询问用户是否继续执行。

可以通过下面的例子对比:

PS C:> $DebugPreference="silentlycontinue"
PS C:> Write-Debug "输入一行调试信息" ; Write-Host "伦敦奥运会女子体操决赛"
伦敦奥运会女子体操决赛
PS C:> $DebugPreference="stop"
PS C:> Write-Debug "输入一行调试信息" ; Write-Host "伦敦奥运会女子体操决赛"
调试: 输入一行调试信息
Write-Debug : 已停止执行命令,因为首选项变量“DebugPreference”或通用参数被设置为 Stop。
所在位置 行:1 字符: 12
+ Write-Debug <<<<  "输入一行调试信息" ; Write-Host "伦敦奥运会女子体操决赛"     + CategoryInfo          : OperationStopped: (:) [Write-Debug], ParentContainsErrorRecordExceptio     + FullyQualifiedErrorId : ActionPreferenceStop,Microsoft.PowerShell.Commands.WriteDebugCommand PS C:> $DebugPreference="continue"
PS C:> Write-Debug "输入一行调试信息" ; Write-Host "伦敦奥运会女子体操决赛"
调试: 输入一行调试信息
伦敦奥运会女子体操决赛
PS C:> $DebugPreference="inquire"
PS C:> Write-Debug "输入一行调试信息" ; Write-Host "伦敦奥运会女子体操决赛"
调试: 输入一行调试信息

确认
是否继续执行此操作?
[Y] 是(Y)  [A] 全是(A)  [H] 终止命令(H)  [S] 挂起(S)  [?] 帮助 (默认值为“Y”): y
伦敦奥运会女子体操决赛

除了自动化变量 $DebugPreference能配置调试信息输出的方式和行为,还有一些自动化变量可以实现类似的目的。

这里稍作回顾和总结。

ConfirmPreference:设置提问确认的级别,可以参考:https://www.pstips.net/powershell-what-if.html

DebugPreference:设置debug信息的显示级别,参考本文上面的信息。

ErrorActionPreference:设置发生错误后的执行动作,可以参考:https://www.pstips.net/powershell-define-fault-tolerance.html

ErrorView:设置错误的显示模式,可以参考:https://www.pstips.net/powershell-define-fault-tolerance.html

ProgressPreference:设置进度条的显示模式,可以参考:https://go.microsoft.com/fwlink/?LinkID=113428

ReportErrorShowExceptionClass:显示异常所在的类。

ReportErrorShowInnerException:显示异常内部异常信息。

ReportErrorShowSource:显示异常的来源。

ReportErrorShowStackTrace:显示异常的错误跟踪栈。

VerbosePreference:设置详细信息的显示模式。

WarningPreference:设置警告信息的显示模式。

单步跟踪:逐行执行

我们可以在 Powershell ISE 中通过F9断点执行Powershell脚本。但是即使没有ISE也可以单步跟踪。

只需要Set-PSDebug -step,Powershell会每只行一段代码,就会向用户询问是否继续执行。

详细信息可以查看:https://technet.microsoft.com/zh-CN/library/dd315302.aspx

本文链接: https://www.pstips.net/powershell-stepping-through-code-breakpoints.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

3 条评论 “Powershell 断点执行