你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 自动化 Runbook 类型

下表定义了 Azure 自动化流程自动化功能支持的几种 Runbook 类型。 若要了解有关流程自动化环境的信息,请参阅在 Azure 自动化中执行 Runbook

类型 说明
图形 基于 Windows PowerShell 的图形 Runbook,只能在 Azure 门户上的图形编辑器中创建和编辑。
图形 PowerShell 工作流 基于 Windows PowerShell 工作流的图形 Runbook,只能在 Azure 门户上的图形编辑器中创建和编辑。
PowerShell 基于 Windows PowerShell 脚本的文本 Runbook。
PowerShell 工作流 基于 Windows PowerShell 工作流脚本的文本 Runbook。
Python 基于 Python 脚本的文本 Runbook。

在确定特定 Runbook 需要使用的类型时,请注意以下事项。

  • 无法将 Runbook 从图形转换为文本类型,反之亦然。
  • 将不同类型的 Runbook 用作子 Runbook 存在各种限制。 有关详细信息,请参阅 Azure 自动化中的子 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

基于 Windows PowerShell 的 PowerShell Runbook。 可以在 Azure 门户中使用文本编辑器直接编辑 Runbook 的代码。 还可以使用任何脱机文本编辑器,以便导入 Runbook 到 Azure 自动化中。

PowerShell 版本由指定的运行时版本(即 7.1 预览版或版本 5.1)决定。 Azure 自动化服务支持最新的 PowerShell 运行时。

同一个 Azure 沙箱和混合 Runbook 辅助角色可以并行执行 PowerShell 5.1 和 PowerShell 7.1 runbook 。

注意

在 runbook 执行时,如果选择“运行时版本”为“7.1 (预览版)”,则使用面向 7.1 运行时版本的 PowerShell 模块;如果选择“运行时版本”为“5.1”,则使用面向 5.1 运行时版本的 PowerShell 模块 。

确保为模块选择正确的运行时版本。

例如:如果在运行时版本 7.1(预览版)中为 Sharepoint 自动化场景执行 runbook,则会在运行时版本 7.1(预览版)中导入模块;如果在运行时版本 5.1 中为 Sharepoint 自动化场景执行 runbook,则会在运行时版本 5.1 中导入模块。 在本例中,你会看到模块的两个条目,一个用于运行时版本 7.1(预览版),另一个用于运行时版本 5.1。

Runbook 类型。

目前支持 PowerShell 5.1 和 7.1(预览版)。

优点

  • 通过 PowerShell 代码来实现所有复杂的逻辑,没有 PowerShell 工作流的各种其他复杂操作。
  • 与 PowerShell 工作流 Runbook 相比,它的启动速度更快,因为它们在运行前不需要经过编译。
  • 在 Azure 和适用于 Windows 和 Linux 的混合 Runbook 辅助角色上运行。

限制 - 版本 5.1

  • 你必须熟悉 PowerShell 脚本。
  • Runbook 无法使用并行处理并行执行多个操作。
  • 出现错误时,Runbook 无法使用检查点恢复 Runbook。
  • 你可以使用 Start-AzAutomationRunbook cmdlet(用于创建新作业),仅将 PowerShell、PowerShell 工作流 Runbook 和图形 Runbook 以子 Runbook 的形式包括在内。
  • Runbook 不支持使用 PowerShell #Requires 语句,且不支持在 Azure 沙盒或混合 Runbook 辅助角色中使用,否则可能导致作业失败。

已知问题 - 版本 5.1

以下是当前 PowerShell Runbook 的已知问题:

  • PowerShell Runbook 无法检索未加密且值为 Null 的变量资产
  • PowerShell Runbook 无法检索名称中包含 *~* 的变量资产。
  • 在 PowerShell Runbook 中,处于循环状态的 Get-Process 操作在经历大约 80 次迭代后可能会崩溃。
  • 如果 PowerShell Runbook 尝试一次性将大量数据写入输出流中,则可能会发生故障。 通常情况下,通过使 Runbook 仅输出处理大型对象所需的信息可以避免出现这种问题。 例如,可以让 cmdlet 仅输出所需的参数,如在 Get-Process | Select ProcessName, CPU 中那样,而不是不受限地使用 Get-Process

限制 - 7.1(预览版)

  • Linux 混合 Runbook 辅助角色不支持 Azure 自动化内部 PowerShell cmdlet。 必须在 Python runbook 的开头部分导入 automationassets 模块才能访问自动化帐户共享资源(资产)函数。
  • 对于 PowerShell 7 运行时版本,不会为导入的模块提取模块活动。
  • PowerShell 7 运行时版本不支持 PSCredential runbook 参数类型。
  • PowerShell 7.x 不支持工作流。 请参阅本文了解详细信息。
  • PowerShell 7.x 目前不支持签名的 runbook。
  • 源代码管理集成不支持 PowerShell 7.1。 此外,源代码管理中的 PowerShell 7.1 runbook 在自动化帐户中创建为 Runtime 5.1。

已知问题 - 7.1(预览版)

  • 此预览版不支持使用 .\child-runbook.ps1 执行子脚本。 解决方法:使用 Start-AutomationRunbook(内部 cmdlet)或 Start-AzAutomationRunbook(来自 Az.Automation 模块)从父 runbook 启动另一个 runbook。
  • PowerShell 7 运行时不支持定义日志记录首选项的 runbook 属性。
    解决方法:在 runbook 开头部分显式设置首选项,如下所示 -
        $VerbosePreference = "Continue"
    
        $ProgressPreference = "Continue"
    
  • 避免将 Az.Accounts 模块导入到 PowerShell 7 运行时的 2.4.0 版本,因为在 Azure 自动化中使用此版本可能会出现意外行为。
  • 对于在 PowerShell 7 运行时中运行的作业,可能会出现错误输出流的格式设置问题。
  • 导入依赖于其他模块的 PowerShell 7.1 模块时,你会发现,即使安装了 PowerShell 7.1 版本的依赖模块,导入按钮也会灰显。 例如,Az.Compute 版本 4.20.0 依赖于 Az.Accounts >= 2.6.0 这样一个条件。 当 PowerShell 5.1 中的等效依赖模块不满足版本要求时,会出现此问题。 例如,Az.Accounts 的 5.1 版本 < 2.6.0。
  • 在使用 Webhook 启动 PowerShell 7 runbook 时,它会将 Webhook 输入参数自动转换为无效的 JSON。

PowerShell 工作流 Runbook

PowerShell 工作流 Runbook 是基于 Windows PowerShell 工作流的文本 Runbook。 可以在 Azure 门户中使用文本编辑器直接编辑 Runbook 的代码。 还可以使用任何脱机文本编辑器,以便导入 Runbook 到 Azure 自动化中。

注意

PowerShell 7.1 不支持工作流 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 和 Python 3 下编译。 Python 3 Runbook 目前处于预览阶段。 可以在 Azure 门户中使用文本编辑器直接编辑 Runbook 的代码。 还可以使用任何脱机文本编辑器,以及将 Runbook 导入到 Azure 自动化中。

以下 Azure 全球基础结构支持 Python 3 runbook:

  • Azure 全球
  • Azure Government

优点

  • 使用强大的 Python 库。
  • 可以在 Azure 中或混合 Runbook 辅助角色上运行。
  • 对于 Python 2,在已安装 Python 2.7 的情况下,支持 Windows 混合 Runbook 辅助角色。
  • 对于 Python 3 云作业,支持 Python 3.8 版本。 如果代码与不同的版本兼容,则任何 3.x 版本的脚本和包都可能起作用。
  • 对于 Windows 计算机上的 Python 3 混合作业,你可以选择安装想使用的任何 3.x 版本。
  • 对于 Linux 计算机上的 Python 3 混合作业,我们根据安装在计算机上 Python 3 版本来运行 DSC OMSConfig 和 Linux 混合辅助角色。 如果 Python 3 版本间的方法签名或协定没有发生重大更改,则不同的版本应该也会工作。

限制

  • 你必须熟悉 Python 脚本。
  • 若要使用第三方库,必须将包导入自动化帐户。
  • 在 PowerShell/PowerShell 工作流中使用 Start-AutomationRunbook cmdlet 启动 Python 3 Runbook(预览版)不起作用。 你可以使用 Az.Automation 模块中的 Start-AzAutomationRunbook 或 AzureRm.Automation 模块中的 Start-AzureRmAutomationRunbook 来解决此限制。 
  • Azure 自动化不支持 sys.stderr。
  • Python automationassets 包在 pypi.org 上不可用,因此无法导入到 Windows 计算机上。

多个 Python 版本

对于 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_PATHPYTHON_3_PATH 设置为模块的位置。

已知问题

对于云作业,Python 3 作业有时会失败,并出现异常消息 invalid interpreter executable path。 如果作业延迟、启动时间超过 10 分钟,或者使用 Start-AutomationRunbook 启动 Python 3 Runbook,则可能会看到此异常。 如果作业延迟,请重新启动 Runbook。 如果使用以下步骤,混合作业应可以正常工作:

  1. 创建名为 PYTHON_3_PATH 的新环境变量,并指定安装文件夹。 例如,如果安装文件夹为 C:\Python3,则需要将此路径添加到该变量中。
  2. 设置环境变量后重启计算机。

后续步骤