Powershell注册遵守夏令时的计划任务

Powershell注册遵守夏令时的计划任务,powershell,scheduled-tasks,Powershell,Scheduled Tasks,我通过Register ScheduledTask和New ScheduledTaskTriggercmdlet使用PowerShell计划任务为自己全天创建提醒。 夏时制来临时,所有的提醒都变成了一个小时 我能做些什么来避免这种情况?它可能要求任务触发器位于本地时间。必须将计划任务触发器修改为位于本地时间 按正常方式创建触发器 $trigger = New-ScheduledTaskTrigger -Daily -At 10:15am 然后编辑触发器的StartBoundary属性: $t

我通过
Register ScheduledTask
New ScheduledTaskTrigger
cmdlet使用PowerShell计划任务为自己全天创建提醒。 夏时制来临时,所有的提醒都变成了一个小时


我能做些什么来避免这种情况?它可能要求任务触发器位于本地时间。

必须将计划任务触发器修改为位于本地时间

  • 按正常方式创建触发器

    $trigger = New-ScheduledTaskTrigger -Daily -At 10:15am
    
  • 然后编辑触发器的StartBoundary属性:

    $trigger.StartBoundary = [DateTime]::Parse($trigger.StartBoundary).ToLocalTime().ToString("s")
    
  • 说明:使用
    新建ScheduledTaskRigger创建触发器时,
    指定的时间将转换为UTC时间,并保存为触发器的
    StartBoundary
    属性中的字符串。在我的机器上,上午10:15am生成一个“
    2017-12-19T15:15:00Z”
    的$
    触发器。起始边界
    ,其中“Z”表示UTC时间。要指定本地时间,我们需要将该日期转换回本地时间并删除“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
    
    这都是我的