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。
圖形化 圖形化 Runbook 是以 Windows PowerShell 為基礎,而且完全在 Azure 入口網站的圖形化編輯器中建立和編輯。
圖形化 PowerShell 工作流程 圖形化 Runbook 是以 Windows PowerShell 工作流程為基礎,而且完全在 Azure 入口網站的圖形化編輯器中建立和編輯。

注意

Azure 自動化會配合父產品 PowerShellPython 各自發佈的時間表,遵循 PowerShell 和 Python 語言版本的支援生命週期。 建議您搭配支援的語言版本使用 Runbook。

在決定要針對特定 Runbook 使用何種類型時,請考慮下列考量。

  • 您無法將 Runbook 從圖形化類型轉換為文字類型,反之亦然。
  • 使用不同類型的 Runbook 作為子 Runbook 時有所限制。 如需詳細資訊,請參閱 Azure 自動化中的子 Runbook

PowerShell Runbook

PowerShell Runbook 以 Windows PowerShell 為基礎。 您可以直接使用 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。

請確定您為模組選取正確的 run-time 版本。

例如:如果您使用執行階段版本 7.1 (預覽) 執行 SharePoint 自動化情節的 Runbook,則會在執行階段版本 7.1 (預覽) 中匯入模組;如果您使用執行階段版本 5.1 執行 SharePoint 自動化情節的 Runbook,則會在執行階段版本 5.1 中匯入模組。 在此情況下,您會看到模組的兩個項目,一個用於 run-time 版本 7.1(預覽),而另一個用於 5.1

Runbook 類型。

注意

目前支援 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 程式碼的 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 不支援使用 Start-Job 搭配使用 -credential
  • 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 模組。

  • 當您使用 New-AzAutomationVariable Az.Automation Module 內的 Cmdlet 來上傳類型 物件的變數時,作業不會如預期般運作。

    因應措施:使用 ConvertTo-Json Cmdlet 將對象轉換成 JSON 字串,然後使用 JSON 字串作為其值上傳變數。 此因應措施可確保在 Azure 自動化 環境中適當處理變數作為 JSON 字串。

    範例 - 建立已儲存 Azure VM 相關信息的 PowerShell 物件

      # 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 Workflow Runbook 是以 Windows PowerShell 工作流程為基礎的文字 Runbook。 您可以直接使用 Azure 入口網站的文字編輯器來編輯 Runbook 的程式碼。 您也可以使用任何離線文字編輯器,並 匯入 Runbook 到 Azure 自動化。

注意

PowerShell 7.1 (預覽) 和 PowerShell 7.2 不支援工作流程 Runbook。

優點

  • 使用 PowerShell 工作流程程式碼實作所有複雜的邏輯。
  • 發生錯誤時,使用檢查點來繼續執行作業。
  • 使用平行處理來平行執行多個動作。
  • 可併入其他圖形化 Runbook 和 PowerShell 工作流程 Runbook 成為子 Runbook,以建立高階工作流程。

限制

  • PowerShell 7+ 版本中不支援 PowerShell 工作流程。 因此,無法升級過期的 Runbook。
  • 相較於較新的 PowerShell 7+ 版本,平行執行的處理效率不佳。
  • PowerShell 工作流程在內部使用多個進程運作。 因此,某個進程中可用的模組可能無法在另一個進程中使用,並導致找不到命令之類的例外狀況。
  • Runbook 必須處理 PowerShell 工作流程額外的複雜性,例如 已還原序列化的物件
  • Runbook 所需的啟動時間比 PowerShell Runbook 更久,因為其在執行之前必須進行編譯。
  • 您只能使用 Start-AzAutomationRunbook Cmdlet,將 PowerShell runbook 包含為子 runbook。
  • Runbook 無法在 Linux 混合式 Runbook 背景工作角色上執行。

Python Runbook

Python Runbook 會在 Python 2.7 (正式發行)、Python 3.8 (正式發行) 和 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 (預覽) 的自訂套件只會在作業執行時間期間進行驗證。 如果套件在執行階段中不相容,或套件的必要相依性未匯入自動化帳戶,則預期作業會失敗。
  • Python 3.10 (預覽) Runbook 目前僅支援 Azure 入口網站。 不支援 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 env 變數,然後再回復至 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 入口網站中的圖形化編輯器,建立和編輯圖形化和圖形化 PowerShell 工作流程 Runbook。 不過,您無法使用另一個工具來建立或編輯這種類型的 Runbook。 圖形化 Runbook 的主要功能:

  • 匯出至您自動化帳戶中的檔案,然後匯入至另一個自動化帳戶。
  • 產生 PowerShell 程式碼。
  • 在匯入期間轉換為圖形化 PowerShell 工作流程 Runbook,或從該 Runbook 進行轉換。

優點

  • 使用虛擬插入連結設定撰寫模型。
  • 將焦點放在資料如何透過此程序來流動。
  • 以視覺方式呈現管理程序。
  • 包含其他 Runbook 做為子 Runbook 來建立高階工作流程。
  • 建議您採用模組化的程式設計。

限制

  • 無法在 Azure 入口網站外部建立或編輯。
  • 可能需要包含 PowerShell 程式碼的程式碼活動來執行複雜邏輯。
  • 無法轉換成其中一個文字格式,也無法將文字 Runbook 轉換成圖形格式。
  • 無法檢視或直接編輯圖形化工作流程所建立的 PowerShell 程式碼。 您可以檢視您在任何程式碼活動中所建立的程式碼。
  • 無法在 Linux 混合式 Runbook 背景工作角色上執行 Runbook。 請參閱使用混合式 Runbook 背景工作角色將資料中心或雲端中的資源自動化
  • 無法以數位方式簽署圖形化 Runbook。

下一步