task scheduler powershell scripts never ends
Solution 1
I had this problem when trying to execute .ps1
file directly. Execute Powershell
and feed it your script as a parameter.
Scheduled Task Actions Tab:
Program\script: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Add Arguments (optional):
-command & 'E:\PowerShell_scripts\Script_name.ps1’
Solution 2
This is going to sound silly, but I initially had the same problem as detailed in the other answers - trying to run the .ps1
script directly instead of via powershell.exe
. I worked that part out since I saw Notepad opening, but after correcting my mistake it was still reporting Running.
Solution 3
For the "Start a program" action, list powershell
as the "Program/script" and put the path to the script you want to run in the "Add arguments (optional)" box.
The action never finishes if you try to "run" a PowerShell script by listing it as the "Program/script" directly, because Notepad is the default application associated with the .ps1
extension (to help users avoid accidentally running a PowerShell script), and so it opens the script in Notepad in the background instead of executing it. Notepad then never closes itself.
Doug
Updated on June 04, 2022Comments
-
Doug almost 2 years
I have a script that works great manually. However, when I schedule it in Task Scheduler, the script never ends and so the next time it tries to run, it fails because the prior instance is still running. The script itself takes a few seconds to complete the first time or when run manually. Here is the script:
$source = "\\server1\upload" $destination = "\\server2\upload" $logfile = "c:\Scripts\fileMover\log.txt" $table = Get-ChildItem $source -include * foreach ($file in $table){ $filename = $file.FullName #write-host $filename try { move-item -LiteralPath $filename -destination $destination -force $body = "Successfully moved $filename to $destination" $subject = "fileMover Succeeded" } catch { $body = "Failed to move $filename to $destination" $subject = "fileMover Failed" } finally { $body | out-file $logfile -append -width 1000 -encoding ascii Send-MailMessage -To "[email protected]" -From "[email protected]" -Subject $subject -SmtpServer "10.1.10.1" -Body $body exit } } exit
The script is scheduled with the following settings:
- Run whether user is logged or not (user account has been granted log in as a batch program privilege)
- Run with highest privileges
- Triggers Daily, every 2 minute
- Action: Start a Program powershell -file c:\Scripts\upload.ps1
As a workaround, I configured the task to automatically stop after 1 minute. However, I'm concerned that in certain circumstances -- such as a large number of large files -- the script may get terminated before completing fully.
The script needs to run every 2 minutes.
-
Glenn Watson about 5 yearsHi, welcome to Stack Overflow. There seems to be some formatting issues with your powershell script there. You may want to use the following guide on how to format code stackoverflow.com/editing-help
-
THE JOATMON over 2 yearsI can't even... This was the solution.
-
Danny Beckett over 2 years@THEJOATMON Sometimes the simplest solutions are the easiest ones to overlook 😅
-
ShigaSuresh almost 2 yearsIs it just me or is it ... command 'E:\PowerShell_scripts\Script_name.ps1’ (note no &)