在 Azure 自動化中啟動 Runbook

下表可協助您判斷在 Azure 自動化中啟動 Runbook 的方法,最適合您的特定案例。 這篇文章包含有關使用 Azure 入口網站和 Windows PowerShell 啟動 Runbook 的詳細資料。 其他方法的詳細資訊在其他文件中提供,您可以從下列連結來存取。

方法 特性
Azure 入口網站
  • 互動式使用者介面的最簡單方法。
  • 提供簡單參數值的表單。
  • 輕鬆追蹤工作狀態。
  • 使用 Azure 登入資訊驗證存取。
  • Windows PowerShell
  • 使用 Windows PowerShell Cmdlet 從命令列呼叫。
  • 可以包含在具有多個步驟的自動化功能中。
  • 使用憑證或 OAuth 使用者主體/服務主體來驗證要求。
  • 提供簡單和複雜的參數值。
  • 追蹤工作狀態。
  • 支援 PowerShell Cmdlet 所需的用戶端。
  • Azure 自動化 API
  • 最有彈性的方法,但也最複雜。
  • 從任何可提出 HTTP 要求的自訂程式碼呼叫。
  • 使用憑證或 OAuth 使用者主體/服務主體來驗證要求。
  • 提供簡單和複雜的參數值。 如果您使用 API 呼叫 Python Runbook,則必須將 JSON 承載序列化。
  • 追蹤工作狀態。
  • Webhook
  • 從單一 HTTP 要求啟動 Runbook。
  • 在 URL 中使用安全性權杖進行驗證。
  • 用戶端無法覆寫在建立 Webhook 時指定的參數值。 Runbook 可以定義填入了 HTTP 要求詳細資料的單一參數。
  • 無法透過 Webhook URL 追蹤工作狀態。
  • 回應 Azure 警示
  • 啟動 Runbook 以回應 Azure 警示。
  • 設定 Runbook 的 Webhook 以及警示的連結。
  • 在 URL 中使用安全性權杖進行驗證。
  • [排程]
  • 每小時、每天、每週或每月排程,自動啟動 Runbook。
  • 透過 Azure 入口網站、PowerShell Cmdlet 或 Azure API 操縱排程。
  • 提供參數值來搭配排程使用。
  • 另一個 Runbook
  • 在另一個 Runbook 中使用 Runbook 作為活動。
  • 對多個 Runbook 使用的功能很有用。
  • 提供參數值給子 Runbook,並在父 Runbook 中使用輸出。
  • 下圖說明 Runbook 的生命週期的詳細逐步程序。 其中包含了 Runbook 在 Azure 自動化中啟動的不同方式、混合式 Runbook 背景工作角色執行 Azure 自動化 Runbook 所需的元件,以及不同元件之間的互動。 若要了解如何在您的資料中心執行自動化 Runbook,請參閱 混合式 Runbook 背景工作

    Runbook Architecture

    使用 Runbook 參數

    從 Azure 入口網站或 Windows PowerShell 啟動 Runbook 時,指示會透過 Azure 自動化 Web 服務傳送。 此服務不支援具有複雜資料類型的參數。 如 Azure 自動化中的子 Runbook中所述,如果您需要提供複雜參數的值,您必須從另一個 Runbook 呼叫它內嵌。

    如下列各節所述,Azure 自動化 Web 服務會為使用特定資料類型的參數提供特殊功能。

    具名值

    如果參數是資料類型 [object],則您可以使用下列 JSON 格式,對它傳送具名值清單:{Name1:'Value1', Name2:'Value2', Name3:'Value3'} 。 這些值必須是簡單類型。 Runbook 會接收參數作為 PSCustomObject,其具有每個具名值的對應屬性。

    請參考以下可接受名為 user之參數的測試 Runbook。

    Workflow Test-Parameters
    {
       param (
          [Parameter(Mandatory=$true)][object]$user
       )
        $userObject = $user | ConvertFrom-JSON
        if ($userObject.Show) {
            foreach ($i in 1..$userObject.RepeatCount) {
                $userObject.FirstName
                $userObject.LastName
            }
        }
    }
    

    以下文字可用於 user 參數。

    {FirstName:'Joe',LastName:'Smith',RepeatCount:'2',Show:'True'}
    

    這會導致下列輸出:

    Joe
    Smith
    Joe
    Smith
    

    陣列

    如果參數是陣列,例如 [array] 或 [string[]],則您可以使用下列 JSON 格式對其傳送值清單:[Value1, Value2, Value3]。 這些值必須是簡單類型。

    請參考以下可接受名為 user之參數的測試 Runbook。

    Workflow Test-Parameters
    {
       param (
          [Parameter(Mandatory=$true)][array]$user
       )
        if ($user[3]) {
            foreach ($i in 1..$user[2]) {
                $ user[0]
                $ user[1]
            }
        }
    }
    

    以下文字可用於 user 參數。

    ["Joe","Smith",2,true]
    

    這會導致下列輸出:

    Joe
    Smith
    Joe
    Smith
    

    認證

    如果參數是資料型別 PSCredential,則可以提供 Azure 自動化認證資產的名稱。 Runbook 會使用您所指定的名稱擷取認證。 下列測試 Runbook 可接受稱為 credential 的參數。

    Workflow Test-Parameters
    {
       param (
          [Parameter(Mandatory=$true)][PSCredential]$credential
       )
       $credential.UserName
    }
    

    假設有稱為 My Credential 的認證資產,則下列文字可用於 user 參數。

    My Credential
    

    假設認證中的使用者名稱是 jsmith,則會顯示下列輸出。

    jsmith
    

    使用 Azure 入口網站啟動 Runbook

    1. 在 Azure 入口網站中,選取 [自動化],然後選取自動化帳戶的名稱。
    2. 從左側窗格中,選取 [Runbook]
    3. 在 [Runbook] 頁面中,選取 Runbook,然後按一下 [啟動]
    4. 如果 Runbook 有參數,系統會針對每個參數,以文字方塊提示您提供值。 如需參數的詳細資訊,請參閱以下的 Runbook 參數
    5. 在 [作業] 窗格中,您可以檢視 Runbook 作業的狀態。

    使用 PowerShell 啟動 Runbook

    您可以使用 Start-AzAutomationRunbook,利用 Windows PowerShell 來啟動 Runbook。 下列範例程式碼會啟動名稱為 Test-Runbook 的 Runbook。

    Start-AzAutomationRunbook -AutomationAccountName "MyAutomationAccount" -Name "Test-Runbook" -ResourceGroupName "ResourceGroup01"
    

    Start-AzAutomationRunbook 會傳回工作物件,一旦啟動 Runbook,您即可用來追蹤狀態。 然後,您可以搭配使用此工作物件與 Get-AzAutomationJob 來判斷工作的狀態,以及使用 Get-AzAutomationJobOutput 擷取其輸出。 下列範例會啟動名稱為 Test-Runbook 的 Runbook,等到它完成,然後顯示其輸出。

    $runbookName = "Test-Runbook"
    $ResourceGroup = "ResourceGroup01"
    $AutomationAcct = "MyAutomationAccount"
    
    $job = Start-AzAutomationRunbook -AutomationAccountName $AutomationAcct -Name $runbookName -ResourceGroupName $ResourceGroup
    
    $doLoop = $true
    While ($doLoop) {
       $job = Get-AzAutomationJob -AutomationAccountName $AutomationAcct -Id $job.JobId -ResourceGroupName $ResourceGroup
       $status = $job.Status
       $doLoop = (($status -ne "Completed") -and ($status -ne "Failed") -and ($status -ne "Suspended") -and ($status -ne "Stopped"))
    }
    
    Get-AzAutomationJobOutput -AutomationAccountName $AutomationAcct -Id $job.JobId -ResourceGroupName $ResourceGroup -Stream Output
    

    如果 Runbook 需要參數,則您必須以雜湊表的形式提供它們。 雜湊表的索引鍵必須符合參數名稱,而值是參數值。 下列範例顯示如何使用兩個名為 FirstName 和 LastName 的字串參數、名為 RepeatCount 的整數,以及名為 Show 的布林值參數來啟動 Runbook。 如需參數的詳細資訊,請參閱以下的 Runbook 參數

    $params = @{"FirstName"="Joe";"LastName"="Smith";"RepeatCount"=2;"Show"=$true}
    Start-AzAutomationRunbook -AutomationAccountName "MyAutomationAccount" -Name "Test-Runbook" -ResourceGroupName "ResourceGroup01" -Parameters $params
    

    下一步