你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 自动化 Runbook 类型
下表定义了 Azure 自动化流程自动化功能支持的几种 Runbook 类型。 若要了解有关流程自动化环境的信息,请参阅在 Azure 自动化中执行 Runbook。
类型 | 说明 |
---|---|
PowerShell | 基于 Windows PowerShell 脚本的文本 Runbook。 当前支持的版本为:PowerShell 5.1(正式版)、PowerShell 7.1(预览版)和 PowerShell 7.2(预览版)。 |
PowerShell 工作流 | 基于 Windows PowerShell 工作流脚本的文本 Runbook。 |
Python | 基于 Python 脚本的文本 Runbook。 当前支持的版本是:Python 2.7 (GA) 、Python 3.8 (GA) 和 Python 3.10 (预览版) 。 |
图形 | 基于 Windows PowerShell 的图形 Runbook,只能在 Azure 门户上的图形编辑器中创建和编辑。 |
图形 PowerShell 工作流 | 基于 Windows PowerShell 工作流的图形 Runbook,只能在 Azure 门户上的图形编辑器中创建和编辑。 |
在确定特定 Runbook 需要使用的类型时,请注意以下事项。
- 无法将 Runbook 从图形转换为文本类型,反之亦然。
- 将不同类型的 Runbook 用作子 Runbook 存在各种限制。 有关详细信息,请参阅 Azure 自动化中的子 Runbook。
PowerShell Runbook
基于 Windows PowerShell 的 PowerShell Runbook。 可以在 Azure 门户中使用文本编辑器直接编辑 Runbook 的代码。 还可以使用任何脱机文本编辑器,以便导入 Runbook 到 Azure 自动化中。
PowerShell 版本由指定的运行时版本(即 7.2 预览版、7.1 预览版或版本 5.1)决定。 Azure 自动化服务支持最新的 PowerShell 运行时。
同一个 Azure 沙箱和混合 Runbook 辅助角色可以并行执行 PowerShell 5.1 和 PowerShell 7.1(预览版)runbook。
注意
- 目前,除澳大利亚中部 2、韩国南部、瑞典南部、Jio 印度中部、巴西 (东南部、印度中部、印度西部、阿联酋中部和 Gov 云之外,所有公共区域的云和混合作业都支持 PowerShell 7.2 预览版) 运行时版本。
- 在 runbook 执行时,如果选择“运行时版本”为“7.1 (预览版)”,则使用面向 7.1(预览版)运行时版本的 PowerShell 模块;如果选择“运行时版本”为“5.1”,则使用面向 5.1 运行时版本的 PowerShell 模块。 这适用于 PowerShell 7.2(预览版)模块和 runbook。
确保为模块选择正确的运行时版本。
例如,如果在运行时版本 7.1(预览版)中为 Sharepoint 自动化场景执行 runbook,则在运行时版本 7.1(预览版)中导入模块;如果在运行时版本 5.1 中为 Sharepoint 自动化场景执行 runbook,则在运行时版本 5.1 中导入模块。 在本例中,你会看到模块的两个条目,一个用于运行时版本 7.1(预览版),另一个用于运行时版本 5.1。
注意
目前支持 PowerShell 5.1、PowerShell 7.1(预览版)和 PowerShell 7.2(预览版)。
优点
- 通过 PowerShell 代码来实现所有复杂的逻辑,没有 PowerShell 工作流的各种其他复杂操作。
- 与 PowerShell 工作流 Runbook 相比,它的启动速度更快,因为它们在运行前不需要经过编译。
- 在 Azure 和适用于 Windows 和 Linux 的混合 Runbook 辅助角色上运行。
限制和已知问题
下面是 PowerShell Runbook 的当前限制和已知问题:
限制
- 你必须熟悉 PowerShell 脚本。
- Runbook 无法使用并行处理并行执行多个操作。
- 出现错误时,Runbook 无法使用检查点恢复 Runbook。
- 你可以使用 Start-AzAutomationRunbook cmdlet(用于创建新作业),仅将 PowerShell、PowerShell 工作流 Runbook 和图形 Runbook 以子 Runbook 的形式包括在内。
- Runbook 无法使用 PowerShell #Requires 语句,并且不支持在 Azure 沙盒或混合 Runbook 辅助角色中使用,否则可能导致作业失败。
- Azure Runbook 不支持带有
-credential
的Start-Job
。 - Azure 不支持所有 PowerShell 输入参数。 了解详细信息。
已知问题
- 依赖于等
C:\modules
内部文件路径的 Runbook 可能会因服务后端基础结构的更改而失败。 更改 Runbook 代码以确保内部文件路径没有依赖项,并使用 Get-ChildItem 获取所需的目录。 - 通过 ARM 模板导入的模块可能不会随 一起
Import-module
加载。 解决方法是创建 (名称为模块名称的 .zip 文件) ,并将模块文件直接添加到 .zip 文件,而不是将命名文件夹压缩 (例如 ModuleNamedZipFile.zip\ModuleFiles) 。 然后,可以删除模块或再次将模块添加到新的 .zip 文件。 Get-AzStorageAccount
cmdlet 可能会失败并出现错误: 在Get-AzStorageAccount
模块Az.Storage
中找到命令,但无法加载模块。- 通过 .zip 文件上传的 PowerShell 5.1 模块可能不会在 Runbook 中加载。 解决方法是创建 (名称为模块名称的 .zip 文件) ,并将模块文件直接添加到 .zip 文件,而不是将命名文件夹压缩 (例如 ModuleNamedZipFile.zip\ModuleFiles) 。 然后,可以删除模块或再次将模块添加到新的 .zip 文件。
- 已完成的作业可能会显示一条警告消息: 在此计算机上检测到 Az 和 AzureRM 模块。Az 和 AzureRM 模块不能在同一会话中导入,也不能在同一脚本或 Runbook 中使用。 这只是一条警告消息,不会影响作业执行。
- PowerShell Runbook 无法检索未加密且值为 Null 的变量资产。
- PowerShell Runbook 无法检索名称中包含
*~*
的变量资产。 - 在 PowerShell Runbook 中,处于循环状态的 Get-Process 操作在经历大约 80 次迭代后可能会崩溃。
- 如果 PowerShell Runbook 尝试一次性将大量数据写入输出流中,则可能会发生故障。 通常情况下,通过使 Runbook 仅输出处理大型对象所需的信息可以避免出现这种问题。 例如,可以让 cmdlet 仅输出所需的参数,如在
Get-Process | Select ProcessName, CPU
中那样,而不是不受限地使用Get-Process
。 - 使用 ExchangeOnlineManagement 模块版本 3.0.0 或更高版本时,可能会遇到错误。 若要解决此问题,请确保还显式上传 PowerShellGet 和 PackageManagement 模块。
- 使用 New-item cmdlet 时,作业可能会暂停。 若要解决此问题,请按照缓解步骤操作:
- 在变量中使用
new-item
cmdlet 的输出,不要使用write-output
命令将其写入输出流。- 从 runbook 的“日志记录和跟踪”设置中启用调试或进度流后,就可以使用它了。
$item = New-Item -Path ".\message.txt" -Force -ErrorAction SilentlyContinue write-debug $item # or use write-progress $item
- 也可以根据需要在脚本中检查变量是否为非空变量。
$item = New-Item -Path ".\message.txt" -Force -ErrorAction SilentlyContinue if($item) { write-output "File Created" }
- 还可以将 runbook 升级到 PowerShell 7.1 或 PowerShell 7.2,其中相同的 runbook 将按预期工作。
- 在变量中使用
- 如果导入版本为 2.12.3 或更高版本的模块 Az.Accounts,请确保显式导入 Newtonsoft.Json v10 模块,前提是 PowerShell 5.1 Runbook 依赖于此模块版本。 此问题的解决方法是使用 PowerShell 7.2 Runbook。
PowerShell 工作流 Runbook
PowerShell 工作流 Runbook 是基于 Windows PowerShell 工作流的文本 Runbook。 可以在 Azure 门户中使用文本编辑器直接编辑 Runbook 的代码。 还可以使用任何脱机文本编辑器,以便导入 Runbook 到 Azure 自动化中。
注意
PowerShell 7.1(预览版)和 PowerShell 7.2(预览版)不支持工作流 runbook。
优点
- 通过 PowerShell 工作流代码实现所有复杂的逻辑。
- 出现错误时,使用检查点恢复操作。
- 使用并行处理并行执行多个操作。
- 能够以子 Runbook 的形式包括其他图形 Runbook 和 PowerShell 工作流 Runbook,以创建高级工作流。
限制
- 你必须熟悉 PowerShell 工作流。
- Runbook 还必须处理与 PowerShell 工作流相关的其他复杂问题,例如反序列化的对象。
- 与 PowerShell Runbook 相比,Runbook 的启动时间更长,因为它们在运行前需要进行编译。
- 可以使用
Start-AzAutomationRunbook
cmdlet 仅将 PowerShell Runbook 作为子 Runbook 包括在内。 - Runbook 无法在 Linux 混合 Runbook 辅助角色上运行。
Python Runbook
Python Runbook 在 Python 2.7 (GA) 、Python 3.8 (GA) 和 Python 3.10 下编译 (预览版) 。 可以在 Azure 门户中使用文本编辑器直接编辑 Runbook 的代码。 还可以使用任何脱机文本编辑器,以及将 Runbook 导入到 Azure 自动化中。
目前,除澳大利亚中部 2、韩国南部、瑞典南部、Jio 印度中部、巴西 (东部、印度中部、印度西部、阿联酋中部和 Gov 云之外,所有公共区域都支持 Python 3.10 预览版) 运行时版本。
优点
注意
导入 Python 包可能需要几分钟时间。
- 使用可靠的 Python 库。
- 可以在 Azure 中或混合 Runbook 辅助角色上运行。
- 对于 Python 2.7,在已安装 Python 2.7 的情况下,支持 Windows 混合 Runbook 辅助角色。
- 对于 Python 3.8 云作业,支持 Python 3.8 版本。 如果代码与不同的版本兼容,则任何 3.x 版本的脚本和包都可能起作用。
- 对于 Windows 计算机上的 Python 3.8 混合作业,你可以选择安装要使用的任何 3.x 版本。
- 对于 Linux 计算机上的 Python 3.8 混合作业,我们根据安装在计算机上 Python 3 版本来运行 DSC OMSConfig 和 Linux 混合辅助角色。 如果 Python 3 版本间的方法签名或协定没有发生重大更改,则不同的版本应该也会工作。
限制
下面是 Python Runbook 的限制
- 你必须熟悉 Python 脚本。
- 对于 Python 2.7.12 模块,请使用 wheel 文件 cp27-amd6。
- 若要使用第三方库,必须将包导入自动化帐户。
- Azure 自动化不支持 sys.stderr。
- Python automationassets 包在 pypi.org 上不可用,因此无法导入到 Windows 计算机上。
多个 Python 版本
它适用于 Windows 混合辅助角色。 对于 Windows Runbook 辅助角色,运行 Python 2 Runbook 时,它会首先查找环境变量 PYTHON_2_PATH
,并验证它是否指向有效的可执行文件。 例如,如果安装文件夹为 C:\Python2
,它将检查 C:\Python2\python.exe
是否是有效的路径。 如果未找到,它会查找 PATH
环境变量以执行类似的检查。
对于 Python 3,它首先查找 PYTHON_3_PATH
环境变量,然后返回到 PATH
环境变量。
如果只使用一个版本的 Python,可以将安装路径添加到 PATH
变量。 如果要在 Runbook 辅助角色上同时使用这两个版本,请为这些版本将 PYTHON_2_PATH
和 PYTHON_3_PATH
设置为模块的位置。
已知问题
对于云作业,Python 3.8 作业有时会失败并显示异常消息 invalid interpreter executable path
。 如果作业延迟、启动时间超过 10 分钟或使用 Start-AutomationRunbook 来启动 Python 3.8 Runbook,则可能会看到此异常。 如果作业延迟,请重新启动 Runbook。
图形 Runbook
可以在 Azure 门户中使用图形编辑器创建和编辑图形 Runbook 与图形 PowerShell 工作流 Runbook。 但是,不能使用其他工具来创建或编辑这种类型的 Runbook。 图形 Runbook 的主要功能:
- 导出到自动化帐户中的文件,然后导入到另一个自动化帐户中。
- 生成 PowerShell 代码。
- 在导入过程中转换为图形 PowerShell 工作流 runbook,或者由该工作流 runbook 转换而来。
优点
- 使用直观的插入-链接-配置创作模型。
- 注重数据在执行流程期间的流动方式。
- 直观展示管理流程。
- 可以以子 Runbook 形式包括其他 Runbook,以便创建高级工作流。
- 鼓励模块化编程。
限制
- 无法在 Azure 门户之外进行创建或编辑。
- 可能需要包含 PowerShell 代码的代码活动,才能执行复杂逻辑。
- 无法转换为某种文本格式,也无法将文本 Runbook 转换为图形格式。
- 不能查看或直接编辑图形工作流创建的 PowerShell 代码。 可以查看在任何代码活动中创建的代码。
- 无法在 Linux 混合 Runbook 辅助角色上运行 Runbook。 请参阅使用混合 Runbook 辅助角色使数据中心或云端的资源实现自动化。
- 不能对图形 runbook 进行数字签名。
后续步骤
- 要了解 PowerShell Runbook,请参阅教程:创建 PowerShell Runbook。
- 要了解 PowerShell 工作流 Runbook,请参阅教程:创建 PowerShell 工作流 Runbook。
- 要了解图形 Runbook,请参阅教程:创建图形 Runbook。
- 要了解 Python Runbook,请参阅教程:创建 Python Runbook。