你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 自动化中启动 Runbook
下表将帮助你确定如何在 Azure 自动化中以最适合你方案的方法启动 Runbook。 本文包含有关使用 Azure 门户和 Windows PowerShell 启动 Runbook 的详细信息。 有关其他方法的详细信息会在其他文档中提供,可以通过以下链接来访问。
方法 | 特征 |
---|---|
Azure 门户 | |
Windows PowerShell | |
Azure 自动化 API | |
Webhook | |
响应 Azure 警报 | |
计划 | |
从另一个 Runbook |
下图演示了 Runbook 生命周期的详细分步过程。 其中包括在 Azure 自动化中启动 Runbook 的不同方式、混合 Runbook 辅助角色执行 Azure 自动化 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”。
- 在“Runbook”页上,选择 Runbook 并单击“启动” 。
- 如果 Runbook 包含参数,则系统会提示在文本框中提供每个参数的值。 有关参数的详细信息,请参阅 Runbook 参数。
- 在“作业”窗格中,可以查看 Runbook 作业的状态。
可以在 Windows PowerShell 中使用 Start-AzAutomationRunbook 启动 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 问题。