在 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 相关论坛上提供解决方案。
如果您以前没有尝试过,请尝试此解决方法,如果您认为它适合您的目的。(对于解决方法的)解释很合理。密切关注列出的缺点。