你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 自动化 Runbook 类型
下表定义了 Azure 自动化流程自动化功能支持的几种 Runbook 类型。 若要了解有关流程自动化环境的信息,请参阅在 Azure 自动化中执行 Runbook。
类型 | 说明 |
---|---|
PowerShell | 基于 Windows PowerShell 脚本的文本 Runbook。 当前支持的版本为:PowerShell 7.2(正式版)和 PowerShell 5.1(正式版)。 由于父产品 PowerShell 不再支持 PowerShell 7.1,因此建议在长期支持的 PowerShell 7.2 版本中创建 Runbook |
PowerShell 工作流 | 基于 Windows PowerShell 工作流脚本的文本 Runbook。 |
Python | 基于 Python 脚本的文本 Runbook。 当前支持的版本为:Python 3.8(正式版)和 Python 3.10(预览版)。 由于父产品 Python 不再支持 Python 2.7,因此建议在长期支持的版本中创建 Runbook。 |
图形 | 基于 Windows PowerShell 的图形 Runbook,只能在 Azure 门户上的图形编辑器中创建和编辑。 |
图形 PowerShell 工作流 | 基于 Windows PowerShell 工作流的图形 Runbook,只能在 Azure 门户上的图形编辑器中创建和编辑。 |
注意
Azure 自动化将分别根据父产品 PowerShell 和 Python 发布的时间线,遵循 PowerShell 和 Python 语言版本的支持生命周期。 建议将 Runbook 与受支持的语言版本配合使用。
在确定特定 Runbook 需要使用的类型时,请注意以下事项。
- 无法将 Runbook 从图形转换为文本类型,反之亦然。
- 将不同类型的 Runbook 用作子 Runbook 存在各种限制。 有关详细信息,请参阅 Azure 自动化中的子 Runbook。
PowerShell Runbook
基于 Windows PowerShell 的 PowerShell Runbook。 可以在 Azure 门户中使用文本编辑器直接编辑 Runbook 的代码。 还可以使用任何脱机文本编辑器,以便导入 Runbook 到 Azure 自动化中。
PowerShell 版本由指定的运行时版本(即版本 7.2、7.1(预览版)或版本 5.1)决定。
同一 Azure 沙盒和混合 Runbook 辅助角色可以并行执行多个面向不同运行时版本的 PowerShell Runbook。
注意
- 目前,除印度中部、阿拉伯联合酋长国中部、以色列中部、意大利北部和德国北部之外的所有公共区域的云和混合作业都支持 PowerShell 7.2 运行时版本。
- 在 runbook 执行时,如果选择“运行时版本”为“7.2”,则使用面向 7.2 运行时版本的 PowerShell 模块;如果选择“运行时版本”为“5.1”,则使用面向 5.1 运行时版本的 PowerShell 模块。 这适用于 PowerShell 7.1(预览版)模块和 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 7.2 运行时版本。
- 对于 PowerShell 7.2 运行时版本,不会为导入的模块提取模块活动。 使用适用于 VS Code 的 Azure 自动化扩展来简化 Runbook 创作体验。
- PowerShell 7.x 不支持工作流。 有关详细信息,请参阅 PowerShell 工作流。
- PowerShell 7.x 目前不支持签名的 runbook。
- 源代码管理集成不支持 PowerShell 7.2。 此外,源代码管理中的 PowerShell 7.2 runbook 还在自动化帐户中创建为运行时 5.1。
- 默认情况下安装 Az 模块 8.3.0。 使用 Azure 门户或 API 再次配置 Az 版本后,将显示所选 Az 模块版本的组件模块的完整列表。
- 导入的 PowerShell 7.2 模块将在作业执行期间进行验证。 请确保还导入了所选模块的所有依赖项以成功执行作业。
- Azure Runbook 不支持带有
-credential
的Start-Job
。 - Azure 不支持所有 PowerShell 输入参数。 了解详细信息。
已知问题
由于服务后端基础结构的更改,依赖于内部文件路径 (如
C:\modules
) 的 Runbook 可能会失败。 更改 Runbook 代码以确保内部文件路径上没有依赖项,并使用 Get-ChildItem 来获取所需的模块信息。Get-AzStorageAccount
cmdlet 可能会失败并出现错误:在模块Az.Storage
中找到了Get-AzStorageAccount
命令,但无法加载该模块 。不支持使用
.\child-runbook.ps1
执行子脚本。
解决方法:使用Start-AutomationRunbook
(内部 cmdlet)或Start-AzAutomationRunbook
(来自 Az.Automation 模块)从父 runbook 启动另一个 runbook。使用 ExchangeOnlineManagement 模块版本 3.0.0 或更高版本时,可能会遇到错误。 若要解决此问题,请确保显式上传 PowerShellGet 和 PackageManagement 模块。
使用 Az.Automation 模块中的
New-AzAutomationVariable
cmdlet 上传 object 类型的变量时,该操作不按预期运行。解决方法:使用 ConvertTo-Json cmdlet 将该对象转换为 JSON 字符串,然后使用 JSON 字符串作为变量值来上传变量。 此解决方法可确保将 Azure 自动化环境中变量作为 JSON 字符串正确处理。
示例 - 创建一个 PowerShell 对象,用于存储有关 Azure VM 的信息
# Retrieve Azure virtual machines with status information for the 'northeurope' region $AzVM = Get-AzVM -Status | Where-Object {$_.Location -eq "northeurope"} $VMstopatch = @($AzVM).Id # Create an Azure Automation variable (This cmdlet will not fail, but the variable may not work as intended when used in the runbook.) New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $VMstopatch # Convert the object to a JSON string $jsonString = $VMstopatch | ConvertTo-Json # Create an Azure Automation variable with a JSON string value (works effectively within the automation runbook) New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $jsonString
PowerShell 工作流 Runbook
PowerShell 工作流 Runbook 是基于 Windows PowerShell 工作流的文本 Runbook。 可以在 Azure 门户中使用文本编辑器直接编辑 Runbook 的代码。 还可以使用任何脱机文本编辑器,以便导入 Runbook 到 Azure 自动化中。
注意
PowerShell 7.1(预览版)和 PowerShell 7.2 不支持工作流 runbook。
优点
- 通过 PowerShell 工作流代码实现所有复杂的逻辑。
- 出现错误时,使用检查点恢复操作。
- 使用并行处理并行执行多个操作。
- 能够以子 Runbook 的形式包括其他图形 Runbook 和 PowerShell 工作流 Runbook,以创建高级工作流。
限制
- PowerShell 7+ 版本不支持 PowerShell 工作流。 因此,无法升级过时的 Runbook。
- 与较新的 PowerShell 7+ 版本相比,并行执行的处理效率低下。
- 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 3.10(预览版)模块,目前仅支持面向 cp310 Linux OS 的 wheel 文件。 了解详细信息
- 不支持源代码管理集成。
- Python 3.10(预览版)的自定义包仅在作业运行时进行验证。 如果包在运行时不兼容或者包所需的依赖项未导入到自动化帐户中,则作业预计会失败。
- 目前,仅 Azure 门户支持 Python 3.10(预览版)runbook。 不支持 Rest API 和 PowerShell。
多个 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。