任务计划程序未唤醒计算机

任务计划程序未唤醒计算机

我设置了一项任务,每天在指定时间唤醒睡眠中的计算机。Windows 10 任务计划程序设置为以管理员身份运行 .bat 文件(“echo hello”),并启用“唤醒计算机以运行任务”条件。如果我通过电源菜单让计算机进入睡眠状态,我会得到不同的结果,具体取决于我在哪台计算机上运行它。

在 Dell Optiplex 960、Bios A18 上,该任务导致机箱上的灯停止闪烁,键盘亮起,但屏幕没有重新亮起。我尝试使用声音文件,但没有音频,但在通过键盘手动唤醒时,媒体播放器已打开,文件似乎已播放。

在 Biostar N68s3+ 上,什么都没有发生,任务计划程序显示“操作员或管理员拒绝该请求”。

在 Ryzen 5xx 上,它运行完美。

我已打开 Windows 和 BIOS 中所有能找到的电源和唤醒功能。这是否与旧机箱在技术上不支持 Windows 10 有关?新主板上是否有我应该寻找的功能?我花了好几个小时研究这个问题,这让我快疯了。除非有更好的工具来做这件事,否则我还是想坚持使用任务计划程序来防止资源负载,因为全天会有很多开/关事件。我的街机游戏厅提前谢谢你。

按照以下说明操作:https://www.groovypost.com/howto/schedule-wake-sleep-windows-automatically/

睡眠.xml:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2021-08-19T10:40:52.0677749</Date>
    <Author>RIKER\Admin</Author>
    <URI>\Sleep</URI>
  </RegistrationInfo>
  <Triggers>
    <TimeTrigger>
      <StartBoundary>2021-08-23T14:30:00</StartBoundary>
      <Enabled>true</Enabled>
    </TimeTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-21-1800914523-2772139078-3296455877-1001</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>"C:\BAT files\sleep.bat"</Command>
    </Exec>
  </Actions>
</Task>

睡眠.bat: Rundll32.exe Powrprof.dll,SetSuspendState sleep

唤醒.xml:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2021-08-19T10:41:17.49175</Date>
    <Author>RIKER\Admin</Author>
    <URI>\Wake</URI>
  </RegistrationInfo>
  <Triggers>
    <TimeTrigger>
      <StartBoundary>2021-08-23T14:35:00</StartBoundary>
      <Enabled>true</Enabled>
    </TimeTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-21-1800914523-2772139078-3296455877-1001</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>true</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>"C:\BAT files\wake.bat"</Command>
    </Exec>
  </Actions>
</Task>

唤醒脚本:echo hello

我在 5 台机器上做过很多组合测试,所以我开始感到困惑了。

睡眠任务始终有效。通过睡眠任务进入睡眠状态,唤醒任务在机器之间工作不一致,唤醒其中一些(但不唤醒屏幕),而不唤醒其他(包括 Ryzen 5)。唤醒的机器似乎在一分钟后又回到睡眠状态。

通过开始菜单进入睡眠状态时,唤醒任务会唤醒两台较新的机器(包括屏幕),并唤醒另外两台机器(但不包括屏幕)。这些机器一分钟后都不会重新进入睡眠状态。

无论是睡眠任务还是开始菜单睡眠,一台机器都无法唤醒。

使用 KM Wakeup 时,所有机器(包括屏幕)都可以正常睡眠和唤醒。

休眠已关闭(powercfg -h off),唤醒定时器在所有电源模式下均已启用。我已更新 bios 和芯片组固件,并检查了 bios 电源/警报选项。

我的下一步是尝试这个,因为 Rundll32.exe 可能存在问题:任务计划程序无法唤醒计算机

答案1

  1. 您尝试的每台计算机的高级电源设置中是否有“允许唤醒定时器”?如果没有,则计算机根本不支持它们。您也可以尝试这个

  2. 在您的测试中,在触发时间前至少 1 分钟让计算机进入睡眠状态。(1 分钟是基于我的笔记本电脑 Acer Aspire 的)。否则,如果睡眠启动后的间隔太短,那么该任务确实会唤醒计算机(在触发后的几秒内..<1 分钟),但无法启动和运行。

  3. 关于屏幕无法打开:任务计划程序的帮助页面说明

当任务计划程序服务唤醒时,计算机运行任务,屏幕可能会保持关闭即使计算机不再处于睡眠或休眠模式。当 Windows 检测到用户已返回使用计算机时,屏幕将打开。

因此,这取决于系统。如果通过电源菜单将计算机置于睡眠状态后,任务将其唤醒,并且您可以知道任务已运行(例如,添加到 bat 文件中echo hello %time% C:\your\path\to\test.txt)但屏幕未打开,无论出于何种原因,那么可能出于同样的原因,它在播放声音文件时不会打开音频。

  1. 至少在测试时,我会禁用电源选项\更改计划设置\更改高级电源设置\睡眠\允许混合睡眠中的“混合”睡眠。它介于睡眠和休眠之间。

  2. sleep.bat 中的命令肯定存在问题。即使此技巧(禁用休眠然后运行该命令)在某些计算机(包括我的计算机)上有效,也不能保证,建议不要使用它,因为它会破坏堆栈,正如其他人指出的那样,请参见以下众多评论:如何通过命令提示符/运行菜单让计算机进入睡眠状态?,实际上不应该起作用https://answers.microsoft.com/en-us/windows/forum/windows_10-power/anyone-know-a-batchscriptprogramexe-that-c​​an-put/741c42d6-41a4-47b2-9c64-fddbf1605637

  3. 如果您需要使用命令使其进入睡眠状态,我认为最好的选择是按照上面最后一个链接中的步骤操作:

下载 Sysinternals PsTools。
下载的应该是 ZIP 文件。
打开它并将 PsShutdown.exe 复制到桌面。
在桌面上,右键单击 PsShutdown.exe 并单击复制。再次右键单击它并单击属性。勾选解除阻止并单击 [确定]。
打开文件资源管理器,导航到“C:\Windows”,向下滚动,右键单击 system32 文件夹并单击粘贴。
要进入待机状态,您现在可以使用以下命令:
psshutdown -d -t 0

(也在我的笔记本电脑上测试过)。

相关内容