对 Azure 自动化中的 runbook 执行问题进行故障排除

使用 Azure 自动化中的流程的自动化,可以创建和管理 PowerShell、PowerShell 工作流以及图形运行手册。 Azure 自动化根据其定义的逻辑来执行 Runbook(运行手册)。 本文提供有关 Azure 自动化中 Runbook 执行问题的故障排除指南。

注释

  • 如果使用 Newtonsoft.Json v10,请务必显式导入该模块,以确保依赖于该版本模块的 PowerShell 5.1 和 PowerShell 7.1 运行手册能正常运行。
  • 父产品 PowerShell 不再支持 PowerShell 7.1。 建议创建多个 PowerShell 7.2 运行手册以获得长期支持。 详细了解 PowerShell 7.2 runbook
  • 如果以下任何解决方案都无法解决您的问题,请在打开支持案例之前,参阅为 Microsoft Azure 自动化收集数据时的指南
  • Azure 自动化允许恢复过去 29 天内删除的 runbook。 可以通过在自动化帐户中将 PowerShell 脚本作为作业运行来还原已删除的 Runbook。 有关详细信息,请参阅还原已删除的 runbook

排查和解决错误代码 400、403 和 429

错误 解决方案
400 Bad Request: This webhook is expired or disabled 若要解决此错误,请参阅 调用 Webhook 时的 400 错误请求状态
The remote server returned an error: (403) Forbidden 若要解决此错误,请参阅 阻止访问 Azure 存储、Azure Key Vault 或 Azure SQL
this.Client.SubscriptionId cannot be null 若要解决此错误,请参阅 Runbook 失败并出现“此错误”。Client.SubscriptionId 不能为 null。“错误消息
ErrorCode: AuthorizationFailed

StatusCode: 403
若要解决此错误,请参阅 多个订阅情况下 Runbooks 失败时的解决方案
429: The request rate is currently too large. Please try again. 若要解决此错误,请参阅 429:请求速率当前太大
错误 解决方案
Runbook 失败并出现错误 The subscription named <subscription name> cannot be found. 当 Runbook 不使用托管标识访问 Azure 资源时,可能会出现此错误。 若要解决此错误,请参阅 找不到 Azure 订阅
Your Azure credentials haven't been set up or have expired, please run connect-azureRmAccount to set up your azure credentials. 如果不使用托管标识,则可能会出现此错误。 若要解决此错误,请使用托管标识。
Command not recognized. 当模块未导入或过期时,通常会发生此错误。 请确保脚本中的依赖模块已导入 Azure 自动化并且是正确版本。 如果自动化帐户中已有该模块,则在沙盒中加载该模块时可能会出现问题。 尝试在 Runbook 开头添加显式 import-module 语句。
Forbidden with client authentication scheme 'anonymous' 在 Azure 自动化沙盒中使用凭据时,会发生此错误。 若要解决此错误,请使用托管标识。
Unable to require token for tenant <tenant-id> 在 Azure 自动化沙盒中使用凭据时,会发生此错误。 若要解决此错误,请使用托管标识。
Server failed to authenticate the request. 在 Azure 自动化沙盒中使用凭据时,会发生此错误。 若要解决此错误,请使用托管标识。
使用 Connect-AzAccount cmdlet 时出错。 若要解决此问题,请参阅 登录 Azure 帐户失败
The term 'Connect-AzAccount' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if the path was included verify that the path is correct and try again. 若要解决此错误,请参阅 “术语未被识别为 cmdlet、函数或脚本的名称”
对 Azure 自动化中的 PnP PowerShell Runbook 运行 Cmdlet 失败。 若要解决此问题,请参阅 Azure 自动化上的 PnP PowerShell Runbook 中的 Cmdlet 失败
<cmdlet name>: The term <cmdlet name> is not recognized as the name of a cmdlet, function, script file, or operable program. 若要解决此错误,请参阅 执行 Runbook 时无法识别 Cmdlet

排查挂起的运行手册、作业失败、停止的运行手册、混合工作器和订阅的问题

問题 解决方案
Runbook 暂停或意外失败。 请查看作业状态以了解 runbook 状态和可能原因。 添加更多输出,以识别在 Runbook 被挂起之前发生的情况。 处理由作业引发的任何异常。 当发生某些异常(如 WebSocket 异常)时重试作业,以防止暂时性网络故障导致 Runbook 故障。 如果您在使用 cmdlet 时遇到问题,可能会在通过 cmdlet 使用的服务中找到更多信息。 例如, New-AzAnalysisServicesServer cmdlet 相关问题可能最终由 Analysis Services 团队解决。
作业已尝试启动三次,但均失败。 检查 自动化限制。 如果限制仅适用于 Azure 沙盒,请考虑迁移到 混合辅助角色
Runbook 在工作,但会停止。 请确保使用托管标识如果使用 Webhook 启动 Runbook,请确保 Webhook 尚未过期。
使用混合工作器时出现的问题。 若要解决这些问题,请参阅混合 Runbook 工作器故障排除指南
Runbook 停滞。 如果无法在 Azure 门户中停止 Runbook 作业,请尝试使用 PowerShell cmdlet Stop-AzureRmAutomationJobStop-AzAutomationJob停止它。
无法启动或计划 runbook。 若要解决此问题,请确保 已发布 运行手册。
使用依赖于二进制文件的 cmdlet 时出现问题。 某些 cmdlet 依赖于二进制文件,例如 Microsoft 数据访问组件 (MDAC) 或 Azure 结构 SDK。 这些 cmdlet 无法在 Azure 自动化沙盒中运行,并且必须通过 混合辅助角色执行。
在 Runbook 中有多个订阅时出现问题。 若要使用 Azure 自动化跨多个订阅管理 Azure 资源,请参阅处理多个订阅来避免出错。

排查常见问题

下表可帮助你排查运行手册 (Runbook) 的常见问题:

問题 解决方案
无法在西欧区域创建新的自动化作业。 出现此问题的原因是西欧区域中自动化服务的可伸缩性限制。 若要解决此问题,请按照 “无法在西欧区域创建新自动化作业”中的步骤作。
Runbook 中的故障或 Azure 自动化问题。 若要了解如何排查常见情况,请参阅 排查 Runbook 问题
Runbook 输出与消息问题。 若要解决此类问题,请参阅检索 Runbook 输出和消息
Azure 自动化中的 PowerShell 模块问题。 若要解决此类问题,请参阅 更新自动化中的 Azure PowerShell 模块

参考文献