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 自動化會配合父產品 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。
注意
- 目前,所有公用區域的雲端和混合式作業都支援 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 中匯入模組。 在此情況下,您會看到模組的兩個項目,一個用於 Runtime 版本 7.1(預覽),而另一個用於 5.1。
注意
目前支援 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 版或更高版本時,可能會遇到錯誤。 若要解決此問題,請確定您已明確上傳 PowerShellGet 和 PackageManagement 模組。
當您在 Az.Automation Module 中使用
New-AzAutomationVariable
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_PATH
和 PYTHON_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。
下一步
- 若要了解 PowerShell Runbook,請參閱教學課程:建立 PowerShell Runbook。
- 若要了解 PowerShell 工作流程 Runbook,請參閱教學課程:建立 PowerShell 工作流程 Runbook。
- 若要了解圖形化 Runbook,請參閱教學課程:建立圖形化 Runbook。
- 若要了解 Python Runbook,請參閱教學課程:建立 Python Runbook。