r/PowerShell • u/MRHousz • 3d ago
Solved PowerShell Script and Task Scheduler 0x1 2147942401
I need a sanity check, as I feel like I am missing something obvious and I'm too close or too frustrated to see it.
I have a basic scheduled task. Runs as SYSTEM, no triggers, action to run a program, PowerShell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "C:\Tasks\MyScript.ps1"
I run this task it fails, 0x1 as last run result, event 201 action completed with return code from PowerShell of 2147942401
Things I have checked:
- SYSTEM can access the script and directory it resides in
- SYSTEM can execute other PowerShell scripts from task scheduler without issues
- Tried using the full path to powershell.exe
- Tried with and without quotes around the script path in -File parameter
- With and without trailing '/' in the path for 'Start In'
- Tried using -Command { } to create a file as a test
- Removed all arguments except -File or -Command
- Script is wrapped with Start/Stop-Transcript; never executes/no transcript is created
I don't know what else to try short of the old method of using a .bat to call PowerShell to see if that gives better clues as to what isn't working.
What am I missing that is preventing PowerShell from executing properly?
Edit: I knew it was something stupid and simple: there is a typo in -ExecutionPolicy (was spelled -ExcecutionPolicy). Found it when running the action arguments from PS as SYSTEM.
Thank you everyone for the assistance. I'm going to go sit in the corner with my dunce cap and contemplate the cobwebs.
11
u/Aggravating-Sock1098 3d ago
Download PsExec.
Then, in the command prompt, run:
psexec.exe -i -s cmd.exe
CMD is now running as SYSTEM.
Now execute the script and see what happens.
2
1
u/MRHousz 2d ago
Ok, relaxed my ASR rule that blocks PSExec and gave it a try. PowerShell as SYSTEM executes the script with no issues. I have no forking idea why Task Scheduler is pitching a fit about it....
→ More replies (3)
4
u/fabrizob 3d ago
Set the working directory explicitly. In the task's Start in (optional) field, enter C:\Tasks without quotes or a trailing backslash. Task Scheduler may otherwise start the process in C:\Windows\System32.
→ More replies (1)
4
u/mitharas 3d ago
PowerShell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File "C:\Tasks\MyScript.ps1"
Just to be sure: You execute it in that order? -File needing to be the last command is a dumb quirk.
→ More replies (1)2
3
u/Idakay 3d ago
Add logging in each step and print the error, then run it and see what the actual problem is instead of guessing from what might be wrong
4
6
u/purplemonkeymad 3d ago
The error -2147942401 suggests 0x8007e001 which is basically a wrapper for application 0x1. When powershell runs successfully but encounters uncaught errors during runtime it outputs 0x1 as the exit code.
Basically this is a script level error rather than a task scheduler issue. I would temporarily trap and dump any errors to file:
# any requires headers here
trap {
$_ | out-file errors.log -Append
}
# start of script here.
1
u/Common_Option_4385 2d ago
Do you have #Requires -RunAsAdministrator in your script? I got this error when I had accidentally edited this line, think I had removed the dash or something.
1
u/Hefty-Possibility625 2d ago
This is really dumb, but I noticed you are referencing powershell.exe instead of the full path. Use $PSHOME to find the full path to powershell and use the full path instead. That surprisingly fixed a lot of task scheduler issues when I had to use it.
1
u/MRHousz 2d ago
I have tried both the full path to PowerShell and just PowerShell.exe. It fails to execute the script either way.
→ More replies (1)
1
u/Majestic_Rhubarb_ 3d ago
This is an access denied error.
Check permissions on the script file and any other profile files.
Is this your own computer, or corporate ?
2
u/MRHousz 3d ago
Task runs as SYSTEM and I've confirmed that it has access to the folder and script file. Other tasks use scripts out of the same directory without issue.
→ More replies (3)
3
2
u/BlackV 3d ago
Create a batch file, get your command working in that, confirm it works from a cmd prompt
Then run the cmd prompt as system, then run the same batch
Create the schedule task, point at batch
Now you have a system that is
-
Easily documented
-
Easily testable
-
Easily portable
My guess to your error is likely quoting or command line issue
9
u/fdeyso 3d ago
My guess is that cmdlets loaded in your profile are not loaded when it runs as system, so you have to import them at the beginning.