You'll see this error when you register a task (via script, GPO, or manually) and Task Scheduler says it saved, but one or more triggers won't actually fire. The exact wording is: The task is registered, but not all specified triggers will start the task. The error code is 0X0004131B.
The culprit here is almost always a trigger that references a user account, time zone, or condition that no longer exists or isn't valid at registration. I've seen this most often when someone copies a task from another machine, or when a task uses a group-managed service account (gMSA) that hasn't been key-distributed properly.
Here's the fix — step by step.
Step 1: Check which trigger is broken
Open Task Scheduler (taskschd.msc). Find the task giving you the error. Right-click it, choose Properties, then click the Triggers tab. You'll see a list of triggers. One or more may have a status that says something like Could not start or just look grayed out. Hover over each trigger — the tooltip often says exactly what's wrong.
If the UI doesn't show a clear error, run this PowerShell command to get the raw trigger XML:
$task = Get-ScheduledTask -TaskName "YourTaskName"
$task.Triggers | Format-List *
Look for UserId or Repetition values that look wrong — like a deleted user or a malformed time span.
Step 2: Verify the user account in the trigger
This is the #1 cause. If a trigger is set to run When a user logs on or At task creation/modification, it references a specific user SID or name. If that account was deleted, disabled, or renamed, the trigger fails.
To check:
- In the Triggers tab, select each trigger and click Edit.
- If the User field shows a name like
DOMAIN\OldUserorS-1-5-21-...that you don't recognize, that's your problem. - Change it to a valid account — use
NT AUTHORITY\SYSTEMfor system-level tasks, or a real domain/service account.
Don't leave it blank. That defaults to the current user at registration time, which may not be what you want.
Step 3: Check the trigger type and conditions
Some trigger types have extra requirements that fail silently:
- On idle trigger — requires the computer to be idle for a configurable time. If idle settings are too aggressive, the trigger never fires.
- At system startup — should work fine unless you're on a really locked-down machine with group policy blocking it.
- On event — the event subscription XML must be valid. A typo in the event ID or source kills the trigger.
- On a schedule with a time zone — if the time zone string is invalid (like a typo in
Pacific Standard Time), it fails.
For schedule tasks, make sure the Start date is in the future. A start date in the past (by even a minute) sometimes causes this error.
Step 4: Kill and recreate the trigger
If editing doesn't help, delete the broken trigger entirely. Then create a fresh one from scratch. I've seen cases where the trigger XML is corrupted — no UI change fixes it. Deleting and re-adding always resolves it.
- In the Triggers tab, select the problem trigger.
- Click Delete.
- Click New... and recreate the trigger with the exact same settings.
- Test by running the task manually once.
Step 5: Check for group policy conflicts
This is less common but I've seen it in domain environments. If you're deploying tasks via GPO, the policy might have a Don't allow application to be run as administrator setting that blocks the trigger's user context. Check Computer Configuration > Administrative Templates > System > Logon. If that policy is enabled, it can interfere with triggers that run with elevated rights.
Also verify the User Account Control setting for the task itself. Right-click the task, go to General tab, and check Run with highest privileges. If that box is unchecked but the trigger requires admin rights, you'll get 0X0004131B.
If it still fails after all that
Check the Task Scheduler operational log in Event Viewer under Applications and Services Logs > Microsoft > Windows > TaskScheduler > Operational. Look for Event ID 201 or 409. Event 201 gives the exact reason a trigger failed. Event 409 means the task registered but a trigger was disabled.
If the log says User account is not available, you've got a domain trust issue or the user SID has been orphaned. Run gpupdate /force and then re-apply the task.
One more thing: if you're using a service account, make sure the account has Log on as a batch job rights. Without that, any trigger that tries to run the task as that account fails. You can set that via Local Security Policy > User Rights Assignment.
That's the list. 90% of the time it's a dead user account in the trigger. The other 10% is a bad schedule or time zone. Start there and you'll have it fixed in 10 minutes.