你当前正在访问 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。
目前支持 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_PATH
和 PYTHON_3_PATH
设置为模块的位置。
已知问题
对于云作业,Python 3 作业有时会失败,并出现异常消息 invalid interpreter executable path
。 如果作业延迟、启动时间超过 10 分钟,或者使用 Start-AutomationRunbook 启动 Python 3 Runbook,则可能会看到此异常。 如果作业延迟,请重新启动 Runbook。 如果使用以下步骤,混合作业应可以正常工作:
- 创建名为
PYTHON_3_PATH
的新环境变量,并指定安装文件夹。 例如,如果安装文件夹为C:\Python3
,则需要将此路径添加到该变量中。 - 设置环境变量后重启计算机。
后续步骤
- 要了解 PowerShell Runbook,请参阅教程:创建 PowerShell Runbook。
- 要了解 PowerShell 工作流 Runbook,请参阅教程:创建 PowerShell 工作流 Runbook。
- 要了解图形 Runbook,请参阅教程:创建图形 Runbook。
- 要了解 Python Runbook,请参阅教程:创建 Python Runbook。