Azure Automation runbook types

The Azure Automation Process Automation feature supports several types of runbooks, as defined in the following table. To learn about the process automation environment, see Runbook execution in Azure Automation.

Type Description
PowerShell Textual runbook based on Windows PowerShell scripting. The currently supported versions are: PowerShell 5.1 (GA), PowerShell 7.1 (preview), and PowerShell 7.2 (preview).
PowerShell Workflow Textual runbook based on Windows PowerShell Workflow scripting.
Python Textual runbook based on Python scripting. The currently supported versions are: Python 2.7 (GA), Python 3.8 (preview), and Python 3.10 (preview).
Graphical Graphical runbook based on Windows PowerShell and created and edited completely in the graphical editor in Azure portal.
Graphical PowerShell Workflow Graphical runbook based on Windows PowerShell Workflow and created and edited completely in the graphical editor in Azure portal.

Take into account the following considerations when determining which type to use for a particular runbook.

  • You can't convert runbooks from graphical to text type, or the other way around.
  • There are limitations when using runbooks of different types as child runbooks. For more information, see Child runbooks in Azure Automation.

PowerShell runbooks

PowerShell runbooks are based on Windows PowerShell. You directly edit the code of the runbook using the text editor in the Azure portal. You can also use any offline text editor and import the runbook into Azure Automation.

The PowerShell version is determined by the Runtime version specified (that is version 7.2 (preview), 7.1 (preview) or 5.1). The Azure Automation service supports the latest PowerShell runtime.

The same Azure sandbox and Hybrid Runbook Worker can execute PowerShell 5.1 and PowerShell 7.1 (preview) runbooks side by side.

Note

  • Currently, PowerShell 7.2 (preview) runtime version is supported in five regions for Cloud jobs only: West Central US, East US, South Africa North, North Europe, Australia Southeast
  • At the time of runbook execution, if you select Runtime Version as 7.1 (preview), PowerShell modules targeting 7.1 (preview) runtime version are used and if you select Runtime Version as 5.1, PowerShell modules targeting 5.1 runtime version are used. This applies for PowerShell 7.2 (preview) modules and runbooks.

Ensure that you select the right Runtime Version for modules.

For example : if you are executing a runbook for a SharePoint automation scenario in Runtime version 7.1 (preview), then import the module in Runtime version 7.1 (preview); if you are executing a runbook for a SharePoint automation scenario in Runtime version 5.1, then import the module in Runtime version 5.1. In this case, you would see two entries for the module, one for Runtime Version 7.1(preview) and other for 5.1.

runbook Types.

Note

Currently, PowerShell 5.1, PowerShell 7.1 (preview) and PowerShell 7.2 (preview) are supported.

Advantages

  • Implement all complex logic with PowerShell code without the other complexities of PowerShell Workflow.
  • Start faster than PowerShell Workflow runbooks, since they don't need to be compiled before running.
  • Run in Azure and on Hybrid Runbook Workers for both Windows and Linux.

Limitations and Known issues

The following are the current limitations and known issues with PowerShell runbooks:

Limitations

  • You must be familiar with PowerShell scripting.
  • Runbooks can't use parallel processing to execute multiple actions in parallel.
  • Runbooks can't use checkpoints to resume runbook if there's an error.
  • You can include only PowerShell, PowerShell Workflow runbooks, and graphical runbooks as child runbooks by using the Start-AzAutomationRunbook cmdlet, which creates a new job.
  • Runbooks can't use the PowerShell #Requires statement, it is not supported in Azure sandbox or on Hybrid Runbook Workers and might cause the job to fail.

Known issues

  • PowerShell runbooks can't retrieve an unencrypted variable asset with a null value.
  • PowerShell runbooks can't retrieve a variable asset with *~* in the name.
  • A Get-Process operation in a loop in a PowerShell runbook can crash after about 80 iterations.
  • A PowerShell runbook can fail if it tries to write a large amount of data to the output stream at once. You can typically work around this issue by having the runbook output just the information needed to work with large objects. For example, instead of using Get-Process with no limitations, you can have the cmdlet output just the required parameters as in Get-Process | Select ProcessName, CPU.

PowerShell Workflow runbooks

PowerShell Workflow runbooks are text runbooks based on Windows PowerShell Workflow. You directly edit the code of the runbook using the text editor in the Azure portal. You can also use any offline text editor and import the runbook into Azure Automation.

Note

PowerShell 7.1 (preview) and PowerShell 7.2 (preview) do not support Workflow runbooks.

Advantages

  • Implement all complex logic with PowerShell Workflow code.
  • Use checkpoints to resume operation if there's an error.
  • Use parallel processing to do multiple actions in parallel.
  • Can include other graphical runbooks and PowerShell Workflow runbooks as child runbooks to create high-level workflows.

Limitations

  • You must be familiar with PowerShell Workflow.
  • Runbooks must deal with the additional complexity of PowerShell Workflow, such as deserialized objects.
  • Runbooks take longer to start than PowerShell runbooks since they must be compiled before running.
  • You can only include PowerShell runbooks as child runbooks by using the Start-AzAutomationRunbook cmdlet.
  • Runbooks can't run on a Linux Hybrid Runbook Worker.

Python runbooks

Python runbooks compile under Python 2, Python 3.8 (preview) and Python 3.10 (preview). You can directly edit the code of the runbook using the text editor in the Azure portal. You can also use an offline text editor and import the runbook into Azure Automation.

  • Python 3.10 (preview) runbooks are currently supported in five regions for cloud jobs only:
    • West Central US
    • East US
    • South Africa North
    • North Europe
    • Australia Southeast

Advantages

Note

Importing a Python package may take several minutes.

  • Uses the robust Python libraries.
  • Can run in Azure or on Hybrid Runbook Workers.
  • For Python 2, Windows Hybrid Runbook Workers are supported with python 2.7 installed.
  • For Python 3.8 (preview) Cloud Jobs, Python 3.8 (preview) version is supported. Scripts and packages from any 3.x version might work if the code is compatible across different versions.
  • For Python 3.8 (preview) Hybrid jobs on Windows machines, you can choose to install any 3.x version you may want to use.
  • For Python 3.8 (preview) Hybrid jobs on Linux machines, we depend on the Python 3 version installed on the machine to run DSC OMSConfig and the Linux Hybrid Worker. Different versions should work if there are no breaking changes in method signatures or contracts between versions of Python 3.

Limitations

Following are the limitations of Python runbooks

  • You must be familiar with Python scripting.
  • For Python 2.7.12 modules use wheel files cp27-amd6.
  • To use third-party libraries, you must import the packages into the Automation account.
  • Azure Automation doesn't support sys.stderr.
  • The Python automationassets package is not available on pypi.org, so it's not available for import onto a Windows machine.

Multiple Python versions

It is applicable for Windows Hybrid workers. For a Windows Runbook Worker, when running a Python 2 runbook it looks for the environment variable PYTHON_2_PATH first and validates whether it points to a valid executable file. For example, if the installation folder is C:\Python2, it would check if C:\Python2\python.exe is a valid path. If not found, then it looks for the PATH environment variable to do a similar check.

For Python 3, it looks for the PYTHON_3_PATH env variable first and then falls back to the PATH environment variable.

When using only one version of Python, you can add the installation path to the PATH variable. If you want to use both versions on the Runbook Worker, set PYTHON_2_PATH and PYTHON_3_PATH to the location of the module for those versions.

Known issues

For cloud jobs, Python 3.8 jobs sometimes fail with an exception message invalid interpreter executable path. You might see this exception if the job is delayed, starting more than 10 minutes, or using Start-AutomationRunbook to start Python 3.8 runbooks. If the job is delayed, restarting the runbook should be sufficient. Hybrid jobs should work without any issue if using the following steps:

  1. Create a new environment variable called PYTHON_3_PATH and specify the installation folder. For example, if the installation folder is C:\Python3, then this path needs to be added to the variable.
  2. Restart the machine after setting the environment variable.

Graphical runbooks

You can create and edit graphical and graphical PowerShell Workflow runbooks using the graphical editor in the Azure portal. However, you can't create or edit this type of runbook with another tool. Main features of graphical runbooks:

  • Exported to files in your Automation account and then imported into another Automation account.
  • Generate PowerShell code.
  • Converted to or from graphical PowerShell Workflow runbooks during import.

Advantages

  • Use visual insert-link-configure authoring model.
  • Focus on how data flows through the process.
  • Visually represent management processes.
  • Include other runbooks as child runbooks to create high-level workflows.
  • Encourage modular programming.

Limitations

  • Can't create or edit outside the Azure portal.
  • Might require a code activity containing PowerShell code to execute complex logic.
  • Can't convert to one of the text formats, nor can you convert a text runbook to graphical format.
  • Can't view or directly edit PowerShell code that the graphical workflow creates. You can view the code you create in any code activities.
  • Can't run runbooks on a Linux Hybrid Runbook Worker. See Automate resources in your datacenter or cloud by using Hybrid Runbook Worker.
  • Graphical runbooks can't be digitally signed.

Next steps