web-dev-qa-db-ja.com

タスクスケジューラ-タスクのアイドル状態

ここでもタスクスケジューラを使用します。

Microsoft-タスクのアイドル状態

Windows 7では、タスクはリンクに記載されているルールに従って動作します...テストされ、機能します。

Windows 10(すべての更新プログラムが適用されたPro v1809)では...正確ではありません。

まず、両方のタスク(Windows 7とWindows 10で)は同じです。タスクは次のように作成されます。

enter image description hereenter image description hereenter image description hereenter image description hereenter image description here

14:15にいくつかのファイルをコピーし、14:15にマウスを動かし、14:15にキーボードで入力し、14:15にコンピューターから離れると、タスクは15に実行されると予想されます。 14時30分ではなく15時、または私は間違っていますか?

タスクは常に14:30に実行されます(コンピューターを最大で14:25にしておく場合)。14:30にコンピューターで作業している場合、タスクはまったく(その日は)実行されません。 WTF? Windows 7がインストールされたコンピューターでタスクを再作成すると、すべてが正常に機能します。

これは、Windows 7を搭載した2台のコンピューターとWindows 10を搭載した3台のコンピューターでテストされました。ここでの数字は問題ではありません。同じことが、02:00に15分のアイドル時間と2時間の待機時間で発生するためです。彼らは何が起こっているのかを絵を描くためだけにここにいます。

どういうわけか、これはWindows 10の06:00から00:00に設定されている「労働時間」と何らかの関係があると思っていたので、タスクを14:30に移動しました...ええ、これは役に立ちませんでした。

そして、はい、Windows 10はWindows 7とは異なるアイドル時間を認識しますが、タスクがすぐに実行されず、特にトリガーが設定されたときに実行されないことを理解しています。

誰かがこの振る舞いを確認でき、おそらくこれがなぜ起こっているのかいくつかの説明を提供できるかどうか興味があります。


13.05.2019。 -私は間違いなくこれを確認することができます。今日、私の2人の友人がこの問題を確認しました。これは、Windows 10 v1809のバグである必要があります(以前のバージョンの場合もあるかもしれませんが、それらにアクセスできません)。また、これがWindows 7マシンで問題なく動作することを確認できます。素晴らしい、ただ素晴らしい。この質問をマイクロソフトフォーラムに投稿します。

enter image description here


15.05.2019。 -Windows 10 v1607でこれをテストするために管理されました...同じことが起こります。この問題を(2年以上で)誰もまだMicrosoftに報告していない可能性はありますか?これは意図したとおりに動作することはできません。これはWindows 10の明らかなバグです。

5
toofat

代わりにOn idleトリガーを使用してみましたか?私の知る限り、アイドル条件はこのトリガーにのみ使用されています。

On Idle Trigger

テストタスクを作成しました-以下にあります。コンピュータがアイドル状態になるたびに1分後に実行されます。それをテストするために、私はWin + Lショートカットを使用してWindows画面をロックしていました。コンピュータがロックされてからちょうど1分後にタスクが実行されました。


Task.xmlをテストします。

このタスクをタスクスケジューラにインポートしてテストできます。

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.Microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2019-05-12T18:21:43.6698729</Date>
    <Author>nsm</Author>
    <URI>\Test Task</URI>
  </RegistrationInfo>
  <Triggers>
    <IdleTrigger>
      <ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
      <Enabled>true</Enabled>
    </IdleTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-18</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <Duration>PT1M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>true</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:\Projects\StackOverflow\cmd\testidletask.cmd</Command>
    </Exec>
  </Actions>
</Task>

testidletask.cmd:

@echo off
for /f "tokens=*" %%i in ('date /T') do set DATE=%%i
for /f "tokens=*" %%a in ('time /T') do set TIME=%%a
echo %DATE% %TIME% >>C:\Projects\StackOverflow\cmd\testidletask.log
1
Sergey Nudnov