如何在 Azure 自动化 Runbook 中捕获调试流

原始产品版本:Azure 自动化
原始 KB 编号: 4022768

摘要

默认情况下,Azure 自动化不捕获任何调试流数据。  如果 Runbook 配置为捕获,则仅捕获输出、错误和警告数据以及详细数据。

若要捕获调试流数据,必须在 Runbook 中执行两个操作:

  1. 设置变量 $GLOBAL:DebugPreference=“Continue” ,该变量指示 PowerShell 在遇到调试消息时继续。 $GLOBAL: 部分告知 PowerShell 在全局范围内执行此操作,而不是在执行语句时脚本位于的任何本地范围内执行此操作。
  2. 将未捕获的调试流重定向到我们捕获的流(例如输出)。 这是通过针对要执行的语句设置 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 (调试) 重定向到流 1 (输出) 。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。