Azure 自動化 Runbook 類型
Azure 自動化 程式自動化功能支援數種類型的 Runbook,如下表所定義。 若要瞭解程式自動化環境,請參閱 runbook 在 Azure 自動化 中執行。
類型 | 描述 |
---|---|
PowerShell | 以 Windows PowerShell 腳本為基礎的文字 Runbook。 目前支援的版本包括:PowerShell 7.2 (GA) 和 PowerShell 5.1 (GA)。 由於 父產品 PowerShell 不再支援 PowerShell 7.1 ,因此建議您在長期支援的 PowerShell 7.2 版本中建立 Runbook |
PowerShell 工作流程 | 以 Windows PowerShell 工作流程腳本為基礎的文字 Runbook。 |
Python | 以 Python 腳本為基礎的文字 Runbook。 目前支援的版本包括:Python 3.8 (GA) 和 Python 3.10 (預覽版)。 由於 父產品 Python 不再支援 Python 2.7 ,因此建議您在長期支援的版本中建立 Runbook。 |
圖形 | 以 Windows PowerShell 為基礎的圖形化 Runbook,並在 Azure 入口網站 的圖形化編輯器中完全建立和編輯。 |
圖形化 PowerShell 工作流程 | 以 Windows PowerShell 工作流程為基礎的圖形化 Runbook,並在 Azure 入口網站 的圖形化編輯器中完全建立和編輯。 |
注意
Azure 自動化 會遵循PowerShell和 Python語言版本的支援生命週期,根據父產品所發佈的時程表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。
注意
- 目前,除了印度中部、阿聯酋中部、以色列中部、義大利北部、德國北部和 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。
注意
目前支援 PowerShell 5.1、PowerShell 7.1(預覽版)和 PowerShell 7.2。
優點
- 使用 PowerShell 程式代碼實作所有複雜的邏輯,而不需要 PowerShell 工作流程的其他複雜度。
- 啟動速度比 PowerShell 工作流程 Runbook 快,因為它們不需要先編譯再執行。
- 在 Azure 和混合式 Runbook 背景工作角色上執行 Windows 和 Linux。
限制和已知問題
以下是 PowerShell Runbook 目前的限制和已知問題:
限制
注意
目前,除了印度中部、阿聯酋中部、以色列中部、義大利北部、德國北部和 Gov 雲端以外,所有公用區域的雲端和混合式作業都支援 PowerShell 7.2 運行時間版本。
- 針對 PowerShell 7.2 運行時間版本,不會針對匯入的模組擷取模組活動。 針對 VS 程式代碼使用 Azure 自動化 擴充功能來簡化 Runbook 撰寫體驗。
- PowerShell 7.x 不支援工作流程。 如需詳細資訊,請參閱 PowerShell工作流程 以取得詳細數據。
- PowerShell 7.x 目前不支援已簽署的 Runbook。
- 原始檔控制整合不支援PowerShell 7.2。 此外,原始檔控制中的PowerShell 7.2 Runbook會在自動化帳戶中建立為 Runtime 5.1。
- 默認會安裝 Az module 8.3.0。 一旦使用 Azure 入口網站 或 API 再次設定 Az 版本,就會顯示所選 Az 模組版本的完整元件模組清單。
- 匯入的 PowerShell 7.2 模組會在作業執行期間進行驗證。 確定已選取模組的所有相依性也會匯入,以便順利執行作業。
- Azure Runbook 不支援
Start-Job
-credential
。 - Azure 不支援所有 PowerShell 輸入參數。 深入了解。
已知問題
Runbook 依賴內部檔案路徑,例如
C:\modules
,可能會因為服務後端基礎結構中的變更而失敗。 變更 Runbook 程式代碼以確保內部檔案路徑沒有相依性,並使用 Get-ChildItem 取得所需的模組資訊。Get-AzStorageAccount
Cmdlet 可能會失敗,並出現錯誤:Get-AzStorageAccount
在模組Az.Storage
中找到 命令,但無法載入模組。不支援使用
.\child-runbook.ps1
執行子腳本。因應措施:使用Start-AutomationRunbook
(內部 Cmdlet) 或Start-AzAutomationRunbook
(從 Az.Automation 模組) 從父 Runbook 啟動另一個 Runbook。當您使用 ExchangeOnlineManagement 模組版本:3.0.0 或更高版本時,可能會遇到錯誤。 若要解決此問題,請確定您明確上傳 PowerShellGet 和 PackageManagement 模組。
當您使用
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 工作流程 Runbook 是以 Windows PowerShell 工作流程為基礎的文字 Runbook。 您可以使用 Azure 入口網站 中的文字編輯器,直接編輯 Runbook 的程式代碼。 您也可以使用任何離線文字編輯器,並將 Runbook 匯入 Azure 自動化。
注意
PowerShell 7.1 (預覽版) 和 PowerShell 7.2 不支援工作流程 Runbook。
優點
- 使用PowerShell工作流程程式代碼實作所有複雜的邏輯。
- 如果發生錯誤,請使用檢查點繼續作業。
- 使用 平行處理 以平行方式執行多個動作。
- 可以包含其他圖形化 Runbook 和 PowerShell 工作流程 Runbook 作為子 Runbook,以建立高階工作流程。
限制
- 您必須熟悉 PowerShell 工作流程。
- Runbook 必須處理 PowerShell 工作流程的額外複雜性,例如 還原串行化的物件。
- Runbook 需要比 PowerShell 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 為目標的轉輪檔案。 深入了解
- 不支援原始檔控制整合。
- 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
env 變數,然後再回復至 PATH
環境變數。
使用一個版本的 Python 時,您可以將安裝路徑新增至 PATH
變數。 如果您想要在 Runbook 背景工作角色上使用這兩個版本,請將 和 PYTHON_3_PATH
設定PYTHON_2_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 轉換。
優點
- 使用可視化 insert-link-configure 製作模型。
- 專注於數據流經流程的方式。
- 以可視化方式表示管理程式。
- 包含其他 Runbook 作為子 Runbook,以建立高階工作流程。
- 鼓勵模組化程序設計。
限制
- 無法在 Azure 入口網站 外部建立或編輯。
- 可能需要包含PowerShell程式碼的程式碼活動來執行複雜的邏輯。
- 無法轉換成其中 一種文字格式,也無法將文字 Runbook 轉換成圖形化格式。
- 無法檢視或直接編輯圖形化工作流程所建立的 PowerShell 程式代碼。 您可以檢視您在任何程式碼活動中建立的程式碼。
- 無法在Linux混合式 Runbook 背景工作角色上執行 Runbook。 請參閱 使用混合式 Runbook 背景工作角色將資料中心或雲端中的資源自動化。
- 無法以數位方式簽署圖形化 Runbook。
下一步
- 若要瞭解 PowerShell Runbook,請參閱 教學課程:建立 PowerShell Runbook。
- 若要瞭解 PowerShell 工作流程 Runbook,請參閱 教學課程:建立 PowerShell 工作流程 Runbook。
- 若要了解圖形化 Runbook,請參閱 教學課程:建立圖形化 Runbook。
- 若要瞭解 Python Runbook,請參閱 教學課程:建立 Python Runbook。