如何在 Azure 自动化 Runbook 中捕获调试流
原始产品版本:Azure 自动化
原始 KB 数: 4022768
总结
默认情况下,Azure 自动化不会捕获任何调试流数据。 仅捕获输出、错误和警告数据,如果 Runbook 配置为捕获数据,则仅捕获详细数据。
若要捕获调试流数据,需要在 runbook 中执行两项操作:
- 设置变量 $GLOBAL:DebugPreference=“Continue”,该变量告知 PowerShell 在遇到调试消息时继续。 “$GLOBAL:”部分指示 PowerShell 在全局范围内执行此操作,而不是在执行语句时脚本所在的任何本地范围内这样做。
- 将我们不会捕获的调试流重定向到我们会捕获的流(如输出)。 此操作通过对要执行的语句设置 PowerShell 重定向来完成。 有关 PowerShell 重定向的详细信息,请参阅 About_Redirection。
示例:
给定以下 Runbook:
Write-Output "This is an output message."
Write-Debug "This is a debug message."
如果要按原样执行此 Runbook,则Azure 自动化中的 Runbook 作业的输出窗格将显示以下内容:
This is an output message.
给定以下 Runbook:
Write-Output "This is an output message."
$GLOBAL:DebugPreference="Continue"
Write-Debug "This is a debug message." 5>&1
如果要执行此 Runbook,输出窗格现在将显示以下内容:
This is an output message.
This is a debug message.
发生这种情况是因为语句$GLOBAL:DebugPreference=“Continue”告知 PowerShell 显示调试消息,然后继续,并将 5&1 添加到任何语句的末尾,这指示 PowerShell 将流 5> (debug) 重定向到流 1(输出)。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。