Windows 10 上的计划任务在错误的时间执行

Windows 10 上的计划任务在错误的时间执行

在 Windows 10 上,我创建了一个计划任务,从上午 8:00 到下午 5:00 每小时对 C:\ 进行一次快照。
只要计算机正在运行或停止(而不是睡眠状态),就可以正常工作。

问题:如果计算机在上午 8 点至下午 5 点之间进入睡眠状态,则计划任务会在计算机唤醒时触发。
例如,计算机在下午 4:45 进入睡眠状态。它在晚上 9:15 唤醒,并创建快照,这是不希望的。

如何防止计划任务在所需时间之外完成其工作?

任务导出到那里:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2019-01-01T00:00:00.00</Date>
    <Author>Author</Author>
    <URI>\VSS</URI>
  </RegistrationInfo>
  <Triggers>
    <CalendarTrigger>
      <Repetition>
        <Interval>PT1H</Interval>
        <Duration>PT8H</Duration>
        <StopAtDurationEnd>false</StopAtDurationEnd>
      </Repetition>
      <StartBoundary>2019-01-01T09:00:00</StartBoundary>
      <Enabled>true</Enabled>
      <ScheduleByWeek>
        <DaysOfWeek>
          <Monday />
          <Tuesday />
          <Wednesday />
          <Thursday />
          <Friday />
        </DaysOfWeek>
        <WeeksInterval>1</WeeksInterval>
      </ScheduleByWeek>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-18</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>false</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT10M</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:\Windows\System32\wbem\WMIC.exe</Command>
      <Arguments>shadowcopy call create Volume=C:\</Arguments>
    </Exec>
  </Actions>
</Task>

答案1

可以使用 PowerShell 作为执行 WMIC 命令的中介。

设置计划任务以执行 powershell 可执行文件“powershell.exe”,并将 powershell 脚本“.PS1”文件位置的路径作为参数传递。

请参阅下面的脚本,它将提取当前时间,并且如果时间在您指定的小时内执行 WMIC 命令:

$StartHour = 8
$EndHour = 17

$DateTimeNow = Get-Date
If($DateTimeNow.Hour -ge $StartHour -and $DateTimeNow.Hour -le $EndHour){
    C:\Windows\System32\wbem\WMIC.exe shadowcopy call create Volume=C:\
}
Else{
    Exit
}

您可以使用变量 $StartHour 和 $EndHour 更改小时数,我建议将小时数采用 24 小时格式。

希望这有帮助!

答案2

在任务计划程序的任务设置选项卡上,有一个选项“在错过计划任务启动后尽快运行任务”。尝试取消选中该选项。

答案3

这个问题似乎已被报告过多次,但目前尚未在 MS 相关论坛上提供解决方案。

如果您以前没有尝试过,请尝试此解决方法,如果您认为它适合您的目的。(对于解决方法的)解释很合理。密切关注列出的缺点。

如何阻止计划任务在计算机唤醒时立即运行?

相关内容