Windows Server 2022 Task Scheduler saves UseUnifiedSchedulingEngine=true despite registering false

Hyuck Jun Ko 20 Reputation points
2026-09-28T06:04:31.9033333+00:00

Environment: Windows Server 2022 Datacenter, build 20348.5622; Windows PowerShell 5.1; Task Scheduler COM API (Schedule.Service).

I am trying to register a task with UseUnifiedSchedulingEngine=false. Before registration, both the in-memory TaskDefinition property and its XML text show false.

I tested two isolated tasks:

  1. TASK_UPDATE (flag 4) on an existing disabled task.
  2. TASK_CREATE (flag 2) for a new disabled task with no triggers and a harmless action.

Both RegisterTaskDefinition calls returned without an error. However, the returned task object and a separate fresh GetTask readback both show UseUnifiedSchedulingEngine=true in the effective setting and saved XML. A separate RegisterTask XML update showed the same behavior. No task was enabled or run.

Is changing false to true an expected or known registration behavior on this Windows Server 2022 build? Which setting or condition controls it? Is there a supported way to register and retain false?

The setting matters because one production task uses a daily CalendarTrigger repeated every 5 minutes for 2 hours. I have kept that task disabled while investigating.

Windows development | Windows API - Win32
0 comments No comments

Answer accepted by question author
Taki Ly (WICLOUD CORPORATION) 5,630 Reputation points Microsoft External Staff Moderator
2026-09-28T06:25:59.1433333+00:00

Hello @Hyuck Jun Ko ,

Thank you for the detailed and well-isolated report. I reproduced the behavior you describe and reviewed the relevant Microsoft documentation. Below is what I found.

I reproduced the behavior by running the same sequence you did (Windows PowerShell 5.1, Schedule.Service COM API, elevated) on Windows 11 build 10.0.26200, which shares the Task Scheduler service codebase with Windows Server 2022. I tested four paths:

  1. RegisterTaskDefinition with TASK_CREATE (2): new disabled task, no triggers, harmless cmd.exe /c exit 0 action
  2. RegisterTaskDefinition with TASK_UPDATE (4) on that task
  3. RegisterTask with raw XML containing <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
  4. Same as (1) but with a daily CalendarTrigger repeating every 5 minutes for 2 hours (PT5M / PT2H), matching your production task shape

In every case the in-memory TaskDefinition and its XmlText showed false before registration, all calls returned S_OK, and both the returned IRegisteredTask and a fresh GetTask readback showed UseUnifiedSchedulingEngine = true in the effective setting and the stored XML. So this is not specific to build 20348.5622, not caused by the update path, flags, or trigger configuration, and not something in your code. The service rewrites the value to true on registration.

Below are my answers to your three questions.

Regarding whether changing false to true is an expected or known registration behavior on this build: it is consistent behavior of the Task Scheduler service on current Windows builds (I observed identical results on Windows 11), so it is not a regression unique to your build. However, I could not find it documented anywhere:

I therefore cannot point you to an official statement that it is by design; it is undocumented behavior as far as the public docs go.

Regarding which setting or condition controls it: none that is exposed. I did not find any task setting, registration flag, registry value, or Group Policy that preserves false. The service applies true unconditionally regardless of TASK_CREATE/TASK_UPDATE, COM vs. XML registration, or trigger content.

Regarding whether there is a supported way to register and retain false: not on current builds. The unified scheduling engine is effectively the only engine in use on Windows 10 / Server 2016 and later.

I would also like to address your production task (daily CalendarTrigger, repeat every 5 minutes for 2 hours). If the concern comes from the What's New in Task Scheduler page, which lists "Repetition patterns for calendar triggers" among features the unified engine did not support, please note that list applies to Windows 7 / Server 2008 R2. The Windows 8 section of the same page documents that the unified engine was extended, and in my test (4) a daily trigger with Repetition.Interval = PT5M, Repetition.Duration = PT2H registered normally with the unified engine. You should be able to re-enable that task safely. If you see any scheduling anomaly after enabling it, check the Microsoft-Windows-TaskScheduler/Operational log for the specific trigger/launch events and share the details with me.

Since this is a community forum, my scope here is limited to public documentation and what I can reproduce myself. I don't have access to the Task Scheduler service internals or the product group's design decisions, so I can't confirm whether this behavior is intentional or give you an official statement on it. If you need an authoritative ruling, a Microsoft Support case is the right route, as that goes through a channel that can reach the product team directly. Go to https://support.microsoft.com/contactus, sign in, and select Server products; you will be redirected to the Microsoft Engage Center, where you can create a support request for Windows Server. Include the build number, your test script, and the before/after XML. You can also use the Feedback control on the right side of the document, just below the In** this **article section, to report the stale default="false" statement so the documentation can be updated.

Hope these information help! If you found my response helpful or informative, I would greatly appreciate it if you could follow this guide for your confirmation.

Thank you.

Was this answer helpful?

1 person found this answer helpful.

1 additional answer

Sort by: Newest
  1. Arshad Hussain 5 Reputation points
    2026-09-28T07:16:34.06+00:00

    Hi Hyuck Jun Ko,

    Step you can follow which is given below to solve this problem

    I would first avoid changing the production task and test the behavior with a sperate disabled task.

    1. Register a basic task with UseUnifiedScheduleingEngine=false and verify whether it remains false after registration.
    2. Add the CalenderTrigger and test again.
    3. Finally, add the %-minute repetition (PT5M for PT2) and check the XML after registration.
    4. Export the registered task using using Export-ScheduledTask and confirm whether UseUnifiedScheduleingEngine has actually changed to true.
    5. Check Event Viewer -> Micrsoft ->WIndows -> TaskScheduler -> Operational for any registration or compatibility events.
    6. Also verify the server 2022 patch level and reproduce the test on the latest approved build

    The key point is that Microsoft documents limitation with the Unified Scheduling Engine, including repetition pattern for Calendar triggers. SO i would first determine whether the value changes only when the repetition is added. if it does, that would point toward a compatibility/ registration issue rather than a general task Scheduler problem.

    I would keep the production task disabled until this is confirmed

    Thanks

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.