本文提供了有关 Runbook 作业在 Azure 自动化中暂停的问题的解决方案。
注释
Azure Automation 支持恢复在过去 29 天内删除的这些 runbooks。 可以通过在自动化帐户中将 PowerShell 脚本作为作业运行来还原已删除的 Runbook。 有关详细信息,请参阅 还原已删除的运行手册。
症状
在连续三次启动尝试失败后,Runbook 作业可能会被暂停。
原因 1:超出 Azure 沙盒中的内存或网络套接字限制
内存限制
如果作业使用的内存超过 400 MB,则作业可能会失败。
网络套接字限制
Azure 沙盒的网络连接数量限制为 1,000 个同时连接。
有关详细信息,请参阅 Azure 自动化限制。
下面是在内存限制内工作的一些建议:
- 在多个 runbook 之间拆分工作负载。
- 减少内存中处理的数据量。
- 避免从 runbook 写入不必要的输出。
- 请考虑在 PowerShell 工作流运行手册中写入的检查点数。
下面是一些操作,可以在运行时减少 Runbook 的内存占用。
- 使用方法
clear
(例如$myVar.clear
)清除变量。 - 使用
[GC]::Collect
命令立即运行垃圾回收。
原因 2:模块不兼容
模块依赖项可能不正确。 在这种情况下,Runbook 通常会返回“找不到命令”或“无法绑定参数”错误消息。
若要解决此问题, 请在 Azure 自动化中更新 Azure PowerShell 模块。
原因 3:未在 Azure 沙盒中使用 Microsoft Entra ID 进行身份验证
尝试在 Azure 沙盒环境中调用可执行文件或子进程的这些 Azure 自动化的运行手册无法使用 Microsoft 身份验证库 (MSAL) 通过 Microsoft Entra ID 进行身份验证。
若要解决此问题,请使用自动化帐户的托管标识。 使用托管标识通过 Microsoft Entra ID 对此运行手册进行身份验证时,请确保以下事项:
- 自动化帐户中提供了 Microsoft Graph PowerShell 模块。
- 向托管标识授予执行 Runbook 自动化任务所需的权限。
如果你的 Runbook 无法在 Azure 沙盒中调用可执行文件或子进程,请在混合工作器上运行该 Runbook。 混合辅助角色不受 Azure 沙盒的内存和网络限制的约束。