Запланированная задача регистрации Powershell, учитывающая переход на летнее время - PullRequest
0 голосов
/ 14 марта 2020

Я использую запланированные задачи PowerShell с помощью командлетов Register-ScheduledTask и New-ScheduledTaskTrigger, чтобы создавать напоминания для себя в течение дня. Когда наступило летнее время, все эти напоминания стали выходным.

Что я могу сделать, чтобы избежать этого? Вероятно, потребуется, чтобы триггеры задач выполнялись по местному времени.

1 Ответ

1 голос
/ 14 марта 2020

Триггер запланированной задачи должен быть изменен на местное время.

  1. Создайте триггер как обычно

    $trigger = New-ScheduledTaskTrigger -Daily -At 10:15am
    
  2. Затем отредактируйте Свойство StartBoundary триггера:

    $trigger.StartBoundary = [DateTime]::Parse($trigger.StartBoundary).ToLocalTime().ToString("s")
    

Объяснение: При создании триггера с New-ScheduledTaskTrigger, указанное время преобразуется в время UT C и сохраняется как строка в свойство триггера StartBoundary. На моей машине 10:15 утра выдает $ trigger.StartBoundary из 2017-12-19T15:15:00Z", где «Z» обозначает время UT C. Чтобы указать местное время, нам нужно преобразовать эту дату обратно в местное время и удалить «Z»; нам нужно "2017-12-19T10:15:00". Приведенный выше фрагмент разбирает строку даты, преобразует ее в местное время и форматирует ее в правильном формате.

Если вам нужно это сделать много, вы можете найти это функция полезна:

function Fix-Trigger {
    param( [parameter(ValueFromPipeline)] [CimInstance] $trigger )
    $newTrigger = $trigger.Clone()
    $newTrigger.StartBoundary = [DateTime]::Parse(
        $trigger.StartBoundary).ToLocalTime().ToString("s")
    $newTrigger
}

# Example usage:
$trigger = New-ScheduledTaskTrigger -Daily -At 10:15am | Fix-Trigger

Это все с здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...