你当前正在访问 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 自动化将分别根据父产品 PowerShellPython 发布的时间线,遵循 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。

注意

  • 目前,除印度中部、阿拉伯联合酋长国中部、以色列中部、意大利北部、德国北部和 Gov 云之外的所有公共区域的云和混合作业都支持 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。

Runbook 类型。

注意

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

优点

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

限制和已知问题

下面是 PowerShell Runbook 的当前限制和已知问题:

限制

注意

目前,除印度中部、阿拉伯联合酋长国中部、以色列中部、意大利北部、德国北部和 Gov 云之外的所有公共区域的云和混合作业都支持 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 不支持带有 -credentialStart-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 或更高版本时,可能会遇到错误。 若要解决此问题,请确保显式上传 PowerShellGetPackageManagement 模块。

  • 使用 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_PATHPYTHON_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 进行数字签名。

后续步骤