AzureのAutomationで平日日中だけVMを稼働させたい、などというとき
管理ポータルから設定できるスケジュールでは
曜日別に7日おきに実行するようにスケジュールを設定する必要がありました。
さすがに大変なので、ジョブ自体は毎日実行にして
Runbookの内容を下記のように記述して、この処理の中で土日はスルーするようにしてみました。
weekday.ps1
#土日非実施
$UTCTime = (Get-Date).ToUniversalTime()
$TZ = [System.TimeZoneInfo]::FindSystemTimeZoneById("Tokyo Standard Time")
$LocalTime = [System.TimeZoneInfo]::ConvertTimeFromUtc($UTCTime, $TZ)
$day = $LocalTime.DayOfWeek
if ($day -eq 'Saturday' -or $day -eq 'Sunday')
{
return
}
else
{
#ここに平日実行したい処理書く
}
曜日の記述を変えれば、特定の曜日だけ処理をしない
といった使い方ができます。
ちなみに日本時間ならTokyo Standard TimeのままでOKですが
他のタイムゾーンを指定する場合は下記のコマンドをpowershellで実行すると
設定できるタイムゾーンIDの一覧を見ることができます。
[System.TimeZoneInfo]::GetSystemTimeZones()