在 Azure 自動化 中管理排程
若要在Azure 自動化中排程 Runbook 以在指定的時間啟動,您可以將它連結至一或多個排程。 排程可以設定為在Azure 入口網站中執行 Runbook 的週期性每小時或每日排程執行一次或每日執行。 您也可以排程每週、每月、一周或一個月中的特定天數,或一個月中的特定日。 一個 Runbook 可以連結至多個排程,一個排程也可以有多個 Runbook 與之連結。
注意
Azure 自動化支援日光節約時間,並適當地排程自動化作業。
注意
目前未針對 Azure 自動化 DSC 組態啟用排程。
用來存取排程的 PowerShell Cmdlet
下表中的 Cmdlet 會使用 PowerShell 建立和管理自動化排程。 它們會隨附于 Az 模組中。
指令程式 | 描述 |
---|---|
Get-AzAutomationSchedule | 擷取排程。 |
Get-AzAutomationScheduledRunbook | 擷取排程的 Runbook。 |
New-AzAutomationSchedule | 建立新的排程。 |
Register-AzAutomationScheduledRunbook | 將 Runbook 與排程產生關聯。 |
Remove-AzAutomationSchedule | 移除排程。 |
Set-AzAutomationSchedule | 設定現有排程的屬性。 |
Unregister-AzAutomationScheduledRunbook | 將 Runbook 與排程解除關聯。 |
建立排程
您可以使用 PowerShell 或使用 Azure Resource Manager (ARM) 範本,從 Azure 入口網站 建立 Runbook 的新排程。 為了避免影響 Runbook 及其自動化程式,您應該先測試任何已連結排程的 Runbook,以及專用於測試的自動化帳戶。 測試會驗證排程的 Runbook 是否繼續正常運作。 如果您看到問題,您可以在將更新的 Runbook 版本移轉至生產環境之前,針對所需的任何變更進行疑難排解並套用。
注意
您的自動化帳戶不會自動取得任何新版本的模組,除非您已從 [模組] 選取 [更新 Azure 模組 ] 選項,以手動更新它們 。 Azure 自動化執行新的排程工作時,會使用自動化帳戶中最新的模組。
在Azure 入口網站中建立新的排程
從您的自動化帳戶,在左側窗格中,選取 [共用資源 ] 底下的 [排程 ]。
在 [ 排程] 頁面上,選取 [新增排程 ]。
在 [ 新增排程] 頁面上,輸入名稱,並選擇性地輸入新排程的描述。
注意
自動化排程目前不支援在排程名稱中使用特殊字元。
選取 [一次 ] 或 [週期 性] 來選取 排程執行一次或 以遞迴排程執行。 如果您選取 [一次 ],請指定開始時間,然後選取 [ 建立 ]。 如果您選取 [ 週期性] ,請指定開始時間。 針對 [ 遞迴] ,選取您希望 Runbook 重複的頻率。 依小時、日、周或月選取。
- 如果您選取 [ 周 ],則會顯示一周的天數,以供您選擇。 視需要選取天數。 排程的第一次執行會在開始時間之後選取的第一天發生。 例如,若要選擇週末排程,請選取 [星期六] 和 [星期日]。
- 如果您選取 [ 月份 ],則會提供不同的選項。 針對 [ 每月發生次數 ] 選項,選取 [ 月日 ] 或 [周日 ]。 如果您選取 [ 月日 ],就會顯示行事曆,以便您可以視需要選擇多少天。 如果您選擇的日期,例如目前月份未發生的第 31 個日期,則不會執行排程。 如果您想要排程在最後一天執行,請在 [每月 的最後一天執行] 底下 選取 [ 是 ]。 如果您選取 [ 周日 ], 就會顯示 [遞迴每一個選項 ]。 選擇 [ 第一個 ]、 [第二 ]、[第三 個]、 [第四 個] 或 [ 最後一個 ]。 最後,選擇要重複的一天。
完成時,選取建立。
使用 PowerShell 建立新的排程
使用 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
使用 Resource Manager 範本建立排程
在此範例中,我們使用自動化 Resource Manager (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 與之連結。 如果 Runbook 有參數,您可以為其提供值。 您必須提供任何必要參數的值,也可以提供任何選擇性參數的值。 每次此排程啟動 Runbook 時,都會使用這些值。 您可以將相同的 Runbook 附加至另一個排程,並指定不同的參數值。
使用Azure 入口網站將排程連結至 Runbook
- 在Azure 入口網站中,從您的自動化帳戶中,選取 [程式自動化 ] 下的 [Runbook ]。
- 選取要排程的 Runbook 名稱。
- 如果 Runbook 目前未連結至排程,系統會提供建立新排程或連結至現有排程的選項。
- 如果 Runbook 有參數,您可以選取 [修改回合設定] 選項 [預設:Azure], 並顯示 [ 參數 ] 窗格。 您可以在這裡輸入參數資訊。
使用 PowerShell 將排程連結至 Runbook
使用 Register-AzAutomationScheduledRunbook Cmdlet 連結排程。 您可以使用 Parameters 參數指定 Runbook 之參數的值。 如需如何指定參數值的詳細資訊,請參閱 在 Azure 自動化 中啟動 Runbook。 下列範例示範如何使用 Azure Resource Manager 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"
排程 Runbook 以更頻繁地執行
設定Azure 自動化排程的最頻繁間隔是一小時。 如果您需要排程比執行頻率更高,有兩個選項:
建立 Runbook 的 Webhook ,並使用 Azure Logic Apps 呼叫 Webhook。 Azure Logic Apps 提供更精細的細微性來定義排程。
建立四個排程,全部在彼此 15 分鐘內開始,每小時執行一次。 此案例可讓 Runbook 以不同的排程每隔 15 分鐘執行一次。
停用排程
當您停用排程時,任何連結至它的 Runbook 都不再在該排程上執行。 您可以手動停用排程,或在建立排程時設定排程的到期時間。 達到到期時間時,就會停用排程。
從Azure 入口網站停用排程
- 在您的自動化帳戶中,在左側窗格中,選取 [共用資源 ] 下的 [排程 ]。
- 選取排程的名稱,以開啟詳細資料窗格。
- 將 [已啟用] 變更 為 [否 ]。
注意
如果您想要停用過去有開始時間的排程,您必須先將開始日期變更為日後的時間,才能儲存。
使用 PowerShell 停用排程
使用 Set-AzAutomationSchedule Cmdlet 來變更現有排程的屬性。 若要停用排程,請為 IsEnabled
參數指定 False。
下列範例示範如何使用 Azure Resource Manager Cmdlet 來停用 Runbook 的排程。
$automationAccountName = "MyAutomationAccount"
$scheduleName = "Sample-MonthlyDaysOfMonthSchedule"
Set-AzAutomationSchedule -AutomationAccountName $automationAccountName `
-Name $scheduleName -IsEnabled $false -ResourceGroupName "ResourceGroup01"
移除排程
當您準備好移除排程時,可以使用 Azure 入口網站 或 PowerShell。 請記住,您只能移除已停用的排程,如上一節所述。
使用Azure 入口網站移除排程
- 在您的自動化帳戶中,在左側窗格中,選取 [共用資源 ] 下的 [排程 ]。
- 選取排程的名稱,以開啟詳細資料窗格。
- 按一下刪除。
使用 PowerShell 移除排程
您可以使用 Remove-AzAutomationSchedule
Cmdlet,如下所示來刪除現有的排程。
$automationAccountName = "MyAutomationAccount"
$scheduleName = "Sample-MonthlyDaysOfMonthSchedule"
Remove-AzAutomationSchedule -AutomationAccountName $automationAccountName `
-Name $scheduleName -ResourceGroupName "ResourceGroup01"
下一步
- 若要深入瞭解用來存取排程的 Cmdlet,請參閱 管理Azure 自動化 中的模組。
- 如需 Runbook 的一般資訊,請參閱 runbook Azure 自動化中的 Runbook 執行。