使用 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:请求速率当前太大。 |
排查与 cmdlet 无法识别、要求登录或缺少订阅相关的错误
| 错误 | 解决方案 |
|---|---|
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-AzureRmAutomationJob 或 Stop-AzAutomationJob停止它。 |
| 无法启动或计划 runbook。 | 若要解决此问题,请确保 已发布 运行手册。 |
| 使用依赖于二进制文件的 cmdlet 时出现问题。 | 某些 cmdlet 依赖于二进制文件,例如 Microsoft 数据访问组件 (MDAC) 或 Azure 结构 SDK。 这些 cmdlet 无法在 Azure 自动化沙盒中运行,并且必须通过 混合辅助角色执行。 |
| 在 Runbook 中有多个订阅时出现问题。 | 若要使用 Azure 自动化跨多个订阅管理 Azure 资源,请参阅处理多个订阅来避免出错。 |
排查常见问题
下表可帮助你排查运行手册 (Runbook) 的常见问题:
| 問题 | 解决方案 |
|---|---|
| 无法在西欧区域创建新的自动化作业。 | 出现此问题的原因是西欧区域中自动化服务的可伸缩性限制。 若要解决此问题,请按照 “无法在西欧区域创建新自动化作业”中的步骤作。 |
| Runbook 中的故障或 Azure 自动化问题。 | 若要了解如何排查常见情况,请参阅 排查 Runbook 问题。 |
| Runbook 输出与消息问题。 | 若要解决此类问题,请参阅检索 Runbook 输出和消息。 |
| Azure 自动化中的 PowerShell 模块问题。 | 若要解决此类问题,请参阅 更新自动化中的 Azure PowerShell 模块。 |
参考文献
- 如何在 Azure 自动化中启动 Runbook
- PowerShell Runbook
- Set-AzSqlDatabase ,用于设置数据库的属性或将现有数据库移到弹性池中