Azure Automation のスケジュールを管理する

指定の時刻に開始するように Azure Automation の Runbook をスケジュール設定するには、Runbook を 1 つ以上のスケジュールにリンクします。 Azure Portal の Runbook では、1 回だけ実行するようにスケジュールを構成することも、時間または日単位で繰り返すスケジュールを指定することもできます。 さらに、週単位、月単位、特定の曜日や日にち、または月の特定の日のスケジュールも指定できます。 1 つの Runbook を複数のスケジュールにリンクし、1 つのスケジュールを複数の Runbook にリンクすることができます。

Note

Azure Automation は、夏時間をサポートしており、オートメーション操作でこれを適切にスケジュールします。

Note

現在、Azure Automation DSC 構成ではスケジュールを使用できません。

スケジュールへのアクセスに使用する PowerShell コマンドレット

PowerShell を使用して Automation スケジュールを作成して管理するためのコマンドレットを次の表に示します。 これらは、Az モジュールに付属しています。

コマンドレット 説明
Get-AzAutomationSchedule スケジュールを取得します。
Get-AzAutomationScheduledRunbook スケジュール済みの Runbook を取得します。
New-AzAutomationSchedule 新しいスケジュールを作成します。
Register-AzAutomationScheduledRunbook Runbook をスケジュールに関連付けます。
Remove-AzAutomationSchedule スケジュールを削除します。
Set-AzAutomationSchedule 既存のスケジュールのプロパティを設定します。
Unregister-AzAutomationScheduledRunbook Runbook とスケジュールの関連付けを解除します。

スケジュールを作成する

Runbook の新しいスケジュールは、Azure portal、PowerShell、または Azure Resource Manager (ARM) テンプレートを使用して作成できます。 Runbook およびそれらが自動化するプロセスに影響が及ばないようにするには、テスト専用の Automation アカウントを使用して、スケジュールがリンクされている Runbook を最初にテストする必要があります。 テストでは、スケジュールされた Runbook が引き続き正常に動作することを検証します。 問題が発生した場合は、更新された Runbook バージョンを運用環境に移行する前に、トラブルシューティングを行い、必要な変更を適用することができます。

Note

[モジュール][Azure モジュールの更新] オプションを選択してモジュールを手動で更新しない限り、Automation アカウントで新しいバージョンのモジュールが自動的に取得されることはありません。 Azure Automation は、スケジュール済みの新しいジョブの実行時に Automation アカウントの最新のモジュールを使用します。

Azure portal で新しいスケジュールを作成する

  1. [Automation アカウント] から、左側のペインで、[共有リソース][スケジュール] を選択します。

  2. [スケジュール] ページで [スケジュールの追加] を選択します。

  3. [新しいスケジュール] ページで、新しいスケジュールの名前と、必要に応じて説明を入力します。

    Note

    Automation スケジュールでは、現在スケジュール名に特殊文字を使用することはできません。

  4. スケジュールを 1 回だけ実行するか、繰り返し実行するかを、[Once]\(1 回\) または [Recurring]\(繰り返し\) から選択します。 [Once]\(1 回\) を選択した場合は、開始時刻を指定してから、[作成] を選択します。 [Recurring]\(繰り返し\) を選択した場合は、開始時刻を指定します。 [Recur every]\(繰り返し間隔\) では、Runbook を繰り返す頻度を選択します。 これは、時間、日、週、月から選択できます。

    • [週] を選択すると、選択対象の曜日が表示されます。 必要な曜日をすべて選択してください。 ご自身のスケジュールが最初に実行されるのは、開始時刻後に選択されている最初の曜日です。 たとえば、週末のスケジュールを選択するには、土曜日と日曜日を選択します。

    Setting weekend recurring schedule

    • [月] を選択すると、別のオプションが表示されます。 [毎月の特定曜日] オプションで、[月の日付][平日] のいずれかを選択します。 [月の日付] を選択すると、任意の日数を選択できるカレンダーが表示されます。 現在の月にはない日付 (31 日など) を選択すると、スケジュールは実行されません。 月の最後の日にスケジュールを実行する場合は、[Run on last day of month]\(月の最終日に実行\)[はい] を選択します。 [Week days]\(曜日\) を選択すると、[Recur every]\(繰り返し間隔\) オプションが表示されます。 [第 1][第 2][第 3][第 4]、または [Last]\(最終\) を選択します。 最後に、スケジュールを繰り返す曜日を選択します。

    Monthly schedule on first, fifteenth, and last day of the month

  5. 完了したら、作成を選択します。

PowerShell で新しいスケジュールを作成する

スケジュールを作成するには、New-AzAutomationSchedule コマンドレットを使用します。 スケジュールの開始時刻と実行の頻度を指定します。 次の例では、多くのさまざまなスケジュール シナリオを作成する方法を示します。

Note

Automation スケジュールでは、現在スケジュール名に特殊文字を使用することはできません。

1 回限りのスケジュールを作成する

次の例は、1 回限りのスケジュールを作成します。

$TimeZone = ([System.TimeZoneInfo]::Local).Id
New-AzAutomationSchedule -AutomationAccountName "ContosoAutomation" -Name "Schedule01" -StartTime "23:00" -OneTime -ResourceGroupName "ResourceGroup01" -TimeZone $TimeZone

定期的なスケジュールを作成する

次の例では、1 年間、毎日午後 1 時に実行される定期的なスケジュールを作成する方法を示します。

$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"

月単位 (初日、15 日、末日) の定期的なスケジュールを作成する

次の例では、毎月 1 日、15 日、および末日に実行される定期的なスケジュールを作成する方法を示します。

$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 テンプレートでスケジュールを作成する

この例では、新しいジョブ スケジュールを作成する Automation Resource Manager (ARM) テンプレートを使用します。 Automation ジョブ スケジュールを管理するためのこのテンプレートの一般的な情報については、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 にリンクされる Automation ジョブ スケジュールの名前を表します。

  • Runbook 名: ジョブ スケジュールが関連付けられる Automation Runbook の名前を表します。

ファイルが保存されたら、次の PowerShell コマンドを使用して Runbook ジョブ スケジュールを作成できます。 このコマンドでは、TemplateFile パラメーターを使用してテンプレートのパスとファイル名を指定します。

New-AzResourceGroupDeployment -ResourceGroupName "ContosoEngineering" -TemplateFile "<path>\RunbookJobSchedule.json"

1 つの Runbook を複数のスケジュールにリンクし、1 つのスケジュールを複数の Runbook にリンクすることができます。 Runbook にパラメーターがある場合は、その値を指定できます。 必須のパラメーターについては必ず値を指定してください。また、省略可能なパラメーターについては値の指定は任意です。 このスケジュールで Runbook が開始されるたびに、これらの値が使用されます。 同じ Runbook を別のスケジュールに関連付けて、異なるパラメーター値を指定することができます。

  1. Azure portal の Automation アカウントから、[プロセス オートメーション] の下で [Runbook] を選択します。
  2. Runbook の名前を選択して、スケジュールを設定します。
  3. 現在、Runbook がスケジュールにリンクされていない場合は、新しいスケジュールを作成するオプション、または既存のスケジュールにリンクするオプションが表示されます。
  4. Runbook にパラメーターがある場合は、[Modify run settings (Default:Azure)]\(実行設定を変更する (既定: Azure\)) オプションを選択すると [パラメーター] ウィンドウが表示されます。 パラメーター情報はここに入力できます。

Register-AzAutomationScheduledRunbook コマンドレットを使用して、スケジュールをリンクします。 Parameters パラメーターを使用して Runbook のパラメーターの値を指定できます。 パラメーター値を指定する方法について詳しくは、「Azure Automation で Runbook を開始する」を参照してください。 次の例では、パラメーターを使用して Azure Resource Manager コマンドレットでスケジュールを 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 Automation のスケジュールを構成できる最も短い間隔は 1 時間です。 それより頻繁にスケジュールを実行する必要がある場合は、2 つのオプションがあります。

  • Runbook 用の Webhook を作成し、Azure Logic Apps を使って Webhook を呼び出します。 Azure Logic Apps を使うと、さらに小さい単位でスケジュールを定義できます。

  • 1 時間に 1 回実行する 4 つのスケジュールを、それぞれ 15 分以下の間隔で作成します。 このシナリオでは、Runbook は異なるスケジュールにより 15 分ごとに実行できます。

スケジュールを無効にする

スケジュールを無効にすると、そのスケジュールにリンクされた Runbook はいずれもそのスケジュールに基づいて実行できなくなります。 スケジュールは手動で無効にしたり、頻度が指定されているスケジュールの有効期限を、作成時に設定したりすることができます。 有効期限の時刻になると、スケジュールは無効になります。

Azure portal からスケジュールを無効にする

  1. [Automation アカウント] の、左側のペインで、[共有リソース][スケジュール] を選択します。
  2. スケジュールの名前を選択して、その詳細ウィンドウを開きます。
  3. 有効いいえ に変更します

Note

開始時刻が過去であるスケジュールを無効にする場合は、保存する前に、開始日を将来の時刻に変更する必要があります。

PowerShell を使用してスケジュールを無効にする

Set-AzureRmAutomationSchedule コマンドレットを使用して、既存のスケジュールのプロパティを変更します。 スケジュールを無効にするには、IsEnabled パラメーターに False を指定します。

次の例は、Azure Resource Manager コマンドレットを使用して Runbook のスケジュールを無効にする方法を示しています。

$automationAccountName = "MyAutomationAccount"
$scheduleName = "Sample-MonthlyDaysOfMonthSchedule"
Set-AzAutomationSchedule -AutomationAccountName $automationAccountName `
-Name $scheduleName -IsEnabled $false -ResourceGroupName "ResourceGroup01"

スケジュールを削除する

スケジュールを削除する準備ができたら、Azure portal または PowerShell のいずれかを使用できます。 削除できるのは、前のセクションで説明したように無効になっているスケジュールのみであることに注意してください。

Azure portal を使用してスケジュールを削除する

  1. [Automation アカウント] の、左側のペインで、[共有リソース][スケジュール] を選択します。
  2. スケジュールの名前を選択して、その詳細ウィンドウを開きます。
  3. [Delete] をクリックします。

PowerShell を使用してスケジュールを削除する

次に示すように Remove-AzAutomationSchedule コマンドレットを使用して、既存のスケジュールを削除できます。

$automationAccountName = "MyAutomationAccount"
$scheduleName = "Sample-MonthlyDaysOfMonthSchedule"
Remove-AzAutomationSchedule -AutomationAccountName $automationAccountName `
-Name $scheduleName -ResourceGroupName "ResourceGroup01"

次のステップ