How can a PowerShell script be automatically run on startup? - powershell

I want to run my script at boot up time in windows 7
I tried
Setup a scheduled task to run at startup - it doesn't run until someone logs in.
Local GP to run script at startup - it doesn't run until someone logs in.
Adding the scheduled task from a command prompt with admin - some time work some time not
schtasks /create /tn "start" /sc onstart /delay 0000:30 /rl highest /ru system /tr "powershell.exe -file <>
any other method to this ?

you can make an bat file in your startup folder.
startup.bat whit this content
Powershell -command "& {c:\Temp\Test.ps1}"

Related

How to Start a Script Using Start-Process Every 30 Minutes With Hidden Window [duplicate]

This question already has answers here:
How to run a PowerShell script without displaying a window?
(23 answers)
Closed 2 years ago.
Windows neophyte here.
I have a script to move video files from my Downloads folder to my Plex server. The script works fine.
I scheduled it to run every 30 minutes using Schtasks. This works fine but shows a window every time it starts.
schtasks.exe /CREATE /SC DAILY /MO 1 /TN 'MoveMKV' /TR 'powershell.exe C:\Users\rammjet\myApps\movemkv.ps1 -WindowStyle Hidden' /ST 07:00 /RI 30 /DU 24:00
I found an answer on Stack Overflow saying to use Start-Process to start the script with the hidden window flag. However, when I try to schedule that with Schtasks, the script does not trigger.
I tried the following two commands:
schtasks.exe /CREATE /SC DAILY /MO 1 /TN 'MoveMKV' /TR 'start-process powershell.exe -arg C:\Users\rammjet\myApps\movemkv.ps1 -WindowStyle Hidden' /ST 07:00 /RI 30 /DU 24:00
schtasks.exe /CREATE /SC DAILY /MO 1 /TN 'MoveMKV' /TR 'start-process -FilePath Powershell.exe -Args C:\Users\rammjet\myApps\movemkv.ps1 -WindowStyle Hidden' /ST 07:00 /RI 30 /DU 24:00
How can I periodically run the script without a window?
Thank you #Lee_Dailey for making me look again at a previous answer.
The 2nd answer in this post did the trick: How to run a PowerShell script without displaying a window?
I was having this same issue. I found out if you go to the Task in Task Scheduler that is running the powershell.exe script, you can click "Run whether user is logged on or not" and that will never show the powershell window when the task runs.

Schedule a Task to delete another task

I have a scheduled task in EC2 windows server 2019 that runs on start and I would like to delete after it finishes.
I tried to schedule a task to delete it but the task kept running without deleting the other one, but the scripts work from Powershell directly.
SCHTASKS /Delete /TN AfterRestartSetup /F
I tried to add /z to delete the task right after it is done but it did not work.
schtasks /create /tn "AfterRestartSetup" /sc onstart /z /rl highest /ru system /tr "powershell.exe -file C:\scripts\setup\AfterRestartSetup.ps1"
I also tried to unregister but it didn't work also:
Unregister-ScheduledTask -TaskName "AfterRestartSetup" -Confirm:$false
You can disable a task like this:
Disable-ScheduledTask -TaskPath "\your-user\" -TaskName "your-task-name"
Add the above line to a text file and save it with ps1 extension. Then create a task on Task Scheduler. In the General tab (of properties window), make sure you check Run with highest privileges. The Action should be Start a program where the Program/script is Powershell.exe and the argument has a complete path to the ps1 file you created earlier (e.g. C:\Scripts\myTask.ps1).

Schedule Task with schtasks

I created a script that creates a scheduled task GPUpdate /Force to be executed from a Windows server machine to a Windows 10 machine "Beta" but the script is not executed and an error shows up:
starttime is not valid
Below you will find my script:
schtasks /Create /S Client.Admin.6NLG-AD /U Admin.6NLG-AD\Beta /P ******** /SC MINUTE /MO 1 /TN Update /TR "GPUpdate /Force" /ST defaults

powershell script works in run.exe but doesn't work as scheduled task

I scheduled this task below and when I click run in Task Scheduler it doesn't throw any errors but the script doesn't execute:
Program:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "& S:\Scripts\Download-USPTO-Forms.ps1 -destinationFolder 'S:\Scripts\USPTO Forms'"
When I open Run.exe and run this cmd then the Powershell window opens and the script executes:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "& S:\Scripts\Download-USPTO-Forms.ps1 -destinationFolder 'S:\Scripts\USPTO Forms'"
Why is that? Any ideas? The task seems to be scheduled correctly.
Why are you using the call operator?
powershell -File "S:\Scripts\Download-USPTO-Forms.ps1" -destinationFolder "S:\Scripts\USPTO Forms"
Furthermore, ensure the task has properly mapped drives and permissions.

Scheduling a Task in command prompt

I am trying to set a ftp upload to be scheduled whether or not the user is logged into their account. What i have so far is:
schtasks /create /sc once /tn "name" /tr "o:\upload.cmd" /st 15:15
I am running this at a elevated command prompt but it will only run when i am logged on. I have tried specifying /RU system, but this results in the command not being executed. Here is the code for that as well:
schtasks /create /sc once /tn "name" /tr "o:\upload.cmd" /ru system /st 15:15
Any guidance would be greatly appreciated!
If your o:\ drive is an mapped drive try to set full path to the file like this :
"\\servername\myfoldername\upload.cmd"
If the issue persist, config in Action panel like this:
Program: C:\Windows\System32\cmd.exe
Add argumetns (optional) : "/C schtasks /create /sc once /tn "name" /tr "o:\upload.cmd" /st 15:15"
It could be a limitation of the SYSTEM account. We have that issue with a service we provide, it can't access network paths.
Try /RU "Network Service" - whether this works however will be dependant on the contents of the file you're running and what it's trying to connect to.
EDIT: OHWAIT I assume the o: drive is a mapped network drive? If this is the case you will only be able to access the path of that script as the user while they are logged in. Otherwise you'll want to use Network Service as above (assuming it has access to the drive, else a domain account) and access the share directly, ie with \\server\share\script.cmd