要将 Azure 自动化中的 Runbook 计划为在指定的时间启动,可以将它链接到一个或多个计划。 可以在 Azure 门户中为 runbook 配置计划,使其运行一次或者每小时或每日定期运行。 还可以将它们计划为每周、每月、每周的特定几天或每月的特定几天或每月的特定一天运行。 一个运行手册可以链接到多个计划,而一个计划也可以链接到多个运行手册。
注意
Azure 自动化支持夏令时并针对自动化操作进行适当的计划。
注意
当前未为 Azure 自动化 DSC 配置启用计划。
下表中的 cmdlet 使用 PowerShell 创建和管理自动化计划。 它们作为 Az 模块的一部分提供。
Cmdlets(命令行小程序) | DESCRIPTION |
---|---|
Get-AzAutomationSchedule | 检索计划。 |
Get-AzAutomationScheduledRunbook | 检索计划 Runbook。 |
New-AzAutomationSchedule | 创建新计划。 |
Register-AzAutomationScheduledRunbook | 将 Runbook 与计划相关联。 |
Remove-AzAutomationSchedule | 删除计划。 |
Set-AzAutomationSchedule | 设置现有计划的属性。 |
Unregister-AzAutomationScheduledRunbook | 将 Runbook 与计划取消关联。 |
可以使用 Azure 门户、PowerShell 或 Azure 资源管理器 (ARM) 模板为 runbook 创建新计划。 为了避免影响 runbook 及其自动化进程,你应该首先测试已将计划与专用于测试的自动化帐户进行链接的 runbook。 测试将验证计划 runbook 是否继续正常工作。 如果出现问题,可以在将更新的 runbook 版本迁移到生产环境之前进行故障排除并应用所需的更改。
注意
自动化帐户不会自动获取模块的任何新版本,除非你通过从模块中选择“更新 Azure 模块”选项来手动更新它们。 当运行新的计划作业时,Azure 自动化将在自动化帐户中使用最新模块。
在自动化帐户的左侧窗格中,选择“共享资源”下的“计划” 。
在“计划”页上选择“添加计划”。
在“新建计划”页中,输入新计划的名称,还可以选择输入新计划的说明。
注意
自动化计划目前不支持在计划名称中使用特殊字符。
通过选择“一次”或“定期”来选择该计划是运行一次,还是按计划重复运行。 如果选择“一次”,请指定开始时间,然后选择“创建” 。 如果选择“定期”,请指定开始时间。 对于“重复间隔”,请选择想要 runbook 重复运行的频率。 选择“时”、“天”、“周”或“月”。
- 如果选择“周”,则会显示一周中可供选择的日期。 根据需要选择天数。 计划的第一次运行将在开始时间之后选择的第一天进行。 例如,若要选择周末计划,请选择“星期六”和“星期日”。
- 如果选择“月”,则会看到不同的选项。 对于“每月进行次数”选项,请选择“每月天数”或“每周天数” 。 如果选择“每月天数”,则会显示一个可根据需要选择天数的日历。 如果选择当月不存在的日期(例如 31 日),则计划将不会运行。 如果希望计划在最后一天运行,请在“在月份的最后一天运行”下选择“是” 。 如果选择“每周天数”,则会显示“重复间隔”选项 。 选择“第一”、“第二”、“第三”、“第四”或“最后” 。 最后选择一天进行重复。
完成后,选择 创建。
使用 New-AzAutomationSchedule cmdlet 创建计划。 必须指定计划的开始时间以及运行频率。 以下示例演示如何创建许多不同的计划场景。
注意
自动化计划目前不支持在计划名称中使用特殊字符。
以下示例创建一个一次性计划。
$TimeZone = ([System.TimeZoneInfo]::Local).Id
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Schedule01" -StartTime "23:00" -OneTime -ResourceGroupName "ResourceGroup01" -TimeZone $TimeZone
以下示例演示如何创建每天下午 1:00 运行且持续一年的定期计划。
$StartTime = Get-Date "13:00:00"
$EndTime = $StartTime.AddYears(1)
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Schedule02" -StartTime $StartTime -ExpiryTime $EndTime -DayInterval 1 -ResourceGroupName "ResourceGroup01"
以下示例演示如何创建仅在工作日运行的每周计划。
$StartTime = (Get-Date "13:00:00").AddDays(1)
[System.DayOfWeek[]]$WeekDays = @([System.DayOfWeek]::Monday..[System.DayOfWeek]::Friday)
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Schedule03" -StartTime $StartTime -WeekInterval 1 -DaysOfWeek $WeekDays -ResourceGroupName "ResourceGroup01"
以下示例演示如何创建仅在周末运行的每周计划。
$StartTime = (Get-Date "18:00:00").AddDays(1)
[System.DayOfWeek[]]$WeekendDays = @([System.DayOfWeek]::Saturday,[System.DayOfWeek]::Sunday)
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Weekends 6PM" -StartTime $StartTime -WeekInterval 1 -DaysOfWeek $WeekendDays -ResourceGroupName "ResourceGroup01"
以下示例演示如何创建在每月的第一天、第十五天和最后一天运行的定期计划。
$StartTime = (Get-Date "18:00:00").AddDays(1)
New-AzAutomationSchedule -AutomationAccountName "TestAzureAuto" -Name "1st, 15th and Last" -StartTime $StartTime -DaysOfMonth @("One", "Fifteenth", "Last") -ResourceGroupName "TestAzureAuto" -MonthInterval 1
在此示例中,我们使用自动化资源管理器 (ARM) 模板来创建新的工作计划。 有关用于管理自动化作业计划的此模板的常规信息,请参阅 Microsoft.Automation automationAccounts/jobSchedules 模板参考。
将此模板文件复制到文本编辑器中:
{
"name": "5d5f3a05-111d-4892-8dcc-9064fa591b96",
"type": "Microsoft.Automation/automationAccounts/jobSchedules",
"apiVersion": "2015-10-31",
"properties": {
"schedule": {
"name": "scheduleName"
},
"runbook": {
"name": "runbookName"
},
"runOn": "hybridWorkerGroup",
"parameters": {}
}
}
编辑以下参数值并将模板另存为 JSON 文件:
作业计划对象名称:GUID(全局唯一标识符)用作作业计划对象的名称。
重要
对于使用 ARM 模板部署的每个作业计划,GUID 必须是唯一的。 即使要重新安排现有计划,也需要更改 GUID。 即使以前删除了使用同一模板创建的现有工作计划,这也适用。 重用相同的 GUID 会导致部署失败。
有可为你生成新 GUID 的联机服务,例如这个免费的 GUID 在线生成器。计划名称:表示将链接到指定 Runbook 的自动化作业计划名称。
Runbook 名称:表示作业计划要关联的自动化 Runbook 的名称。
保存文件后,可以使用以下 PowerShell 命令创建 Runbook 作业计划。 此命令使用 TemplateFile
参数来指定模板的路径和文件名。
New-AzResourceGroupDeployment -ResourceGroupName "ContosoEngineering" -TemplateFile "<path>\RunbookJobSchedule.json"
一个运行手册可以链接到多个计划,而一个计划也可以链接到多个运行手册。 如果 Runbook 包含参数,则可以提供这些参数的值。 必须为所有必需参数提供值,还可以为任何可选参数提供值。 此计划每次启动 Runbook 时,都将使用这些值。 可以将同一个 Runbook 附加到另一个计划,并指定不同的参数值。
- 在 Azure 门户中,从你的自动化帐户中,在“流程自动化”下选择“Runbook” 。
- 选择要计划的 runbook 的名称。
- 如果 runbook 当前未链接到计划,则系统会提供“创建新计划”或“链接到现有计划”选项。
- 如果 runbook 有参数,可以选择选项“修改运行设置(默认值:Azure)”,此时会显示“参数”窗格 。 可以在其中输入参数信息。
使用 Register-AzAutomationScheduledRunbook cmdlet 链接计划。 可以使用“参数”参数来指定运行手册参数的值。 有关如何指定参数值的详细信息,请参阅在 Azure 自动化中启动 Runbook。 以下示例演示了如何使用带参数的 Azure 资源管理器 cmdlet 将计划链接到 runbook。
$automationAccountName = "MyAutomationAccount"
$runbookName = "Test-Runbook"
$scheduleName = "Sample-DailySchedule"
$params = @{"FirstName"="Joe";"LastName"="Smith";"RepeatCount"=2;"Show"=$true}
Register-AzAutomationScheduledRunbook -AutomationAccountName $automationAccountName `
-Name $runbookName -ScheduleName $scheduleName -Parameters $params `
-ResourceGroupName "ResourceGroup01"
可为 Azure 自动化中的计划配置的最频繁间隔为一小时。 如果你需要运行比这更频繁的计划,有两个选项:
为 runbook 创建 Webhook,并使用 Azure 逻辑应用调用 webhook。 Azure 逻辑应用提供更精细的粒度来定义计划。
创建四个计划,每个计划在 15 分钟内开始,每小时运行一次。 此方案使用不同的计划,可让 Runbook 每隔 15 分钟运行一次。
禁用计划后,链接到该计划的所有 Runbook 不再按该计划运行。 可以手动禁用计划,也可以在创建带频率的计划时设置其过期时间。 到达过期时间时,会禁用该计划。
- 在自动化帐户的左侧窗格中,选择“共享资源”下的“计划” 。
- 选择某个计划的名称以打开详细信息窗格。
- 将“已启用”更改为“否”。
注意
如果要禁用开始时间为过去时间的计划,则必须在保存之前将开始日期更改为将来的时间。
可使用 Set-AzAutomationSchedule cmdlet 更改现有计划的属性。 若要禁用计划,请为 IsEnabled
参数指定 False。
以下示例演示了如何使用 Azure 资源管理器 cmdlet 禁用 runbook 的计划。
$automationAccountName = "MyAutomationAccount"
$scheduleName = "Sample-MonthlyDaysOfMonthSchedule"
Set-AzAutomationSchedule -AutomationAccountName $automationAccountName `
-Name $scheduleName -IsEnabled $false -ResourceGroupName "ResourceGroup01"
准备删除计划时,可以使用 Azure 门户或 PowerShell。 请记住,只能删除已禁用的计划,如前一部分中所述。
- 在自动化帐户的左侧窗格中,选择“共享资源”下的“计划” 。
- 选择某个计划的名称以打开详细信息窗格。
- 单击 “删除” 。
可以按如下所示使用 Remove-AzAutomationSchedule
cmdlet 来删除现有计划。
$automationAccountName = "MyAutomationAccount"
$scheduleName = "Sample-MonthlyDaysOfMonthSchedule"
Remove-AzAutomationSchedule -AutomationAccountName $automationAccountName `
-Name $scheduleName -ResourceGroupName "ResourceGroup01"
- 若要了解有关用于访问计划的 cmdlet 的详细信息,请参阅在 Azure 自动化中管理模块。
- 有关 Runbook 的常规信息,请参阅在 Azure 自动化中执行 Runbook。