在脚本和函数中使用断点停止脚本执行,方便调试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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
参考链接全部挂了哦
参考链接全部挂了哦
谢谢提醒,已修复。