在 Azure 自動化中啟動 Runbook
下表可協助您判斷在 Azure 自動化中啟動 Runbook 的方法,最適合您的特定案例。 這篇文章包含有關使用 Azure 入口網站和 Windows PowerShell 啟動 Runbook 的詳細資料。 其他方法的詳細資訊在其他文件中提供,您可以從下列連結來存取。
方法 | 特性 |
---|---|
Azure 入口網站 | |
Windows PowerShell | |
Azure 自動化 API | |
Webhook | |
回應 Azure 警示 | |
[排程] | |
另一個 Runbook |
下圖說明 Runbook 的生命週期的詳細逐步程序。 其中包含了 Runbook 在 Azure 自動化中啟動的不同方式、混合式 Runbook 背景工作角色執行 Azure 自動化 Runbook 所需的元件,以及不同元件之間的互動。 若要了解如何在您的資料中心執行自動化 Runbook,請參閱 混合式 Runbook 背景工作
使用 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
- 在 Azure 入口網站中,選取 [自動化],然後選取自動化帳戶的名稱。
- 從左側窗格中,選取 [Runbook]。
- 在 [Runbook] 頁面中,選取 Runbook,然後按一下 [啟動]。
- 如果 Runbook 有參數,系統會針對每個參數,以文字方塊提示您提供值。 如需參數的詳細資訊,請參閱以下的 Runbook 參數。
- 在 [作業] 窗格中,您可以檢視 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
下一步
- 若要了解 Runbook 管理的詳細資料,請參閱 在 Azure 自動化中管理 Runbook。
- 如需 PowerShell 的詳細資料,請參閱 PowerShell 文件。
- 若要疑難排解 Runbook 執行的問題,請參閱為 Runbook 問題疑難排解。