To ease some of my work I have created a powershell script which needs to :
I created the startup service using powershell like this :
function MakeStartupService { Write-Host "Adding script as a startup service" $trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:15 Try { Register-ScheduledJob -Trigger $trigger -FilePath "absolute_path" -Name "Job-name" -EA Stop } Catch [system.exception] { Write-Host "Looks like an existing startup service exists for the same. Overwriting existing job" Unregister-ScheduledJob "Job-name" Register-ScheduledJob -Trigger $trigger -FilePath "absolute_path" -Name "Job-name" } }
The job is registered as a startup service successfully and is visible inside task scheduler. If I start it using Start-Job -DefinitionName Job-name
or by right clicking from Task Scheduler, it works fine but it doesn't start when windows starts.
Currently I am testing this on my personal Windows 10 system, and have checked in another windows 10 system but the behavior remained name. I am attaching screenshot of task scheduler window for this job.
Sorry if this questions sounds repeated or dumb (I am a beginner in powershell), but believe me, none of the solutions I found online worked for this.
Thanks in advance !!
Use the Run Application You can open Windows PowerShell with administrator privileges from Run. First, press Windows+R to open Run, and then type “powershell” in the text box. Next, press Ctrl+Shift+Enter. Windows PowerShell will open in admin mode.
To create the job trigger, open the Windows PowerShell console with admin rights by right clicking the Windows PowerShell icon on the Start page or from the task bar, and then choosing Run as Administrator from the action menu.
The Start-Job cmdlet starts a PowerShell background job on the local computer. A PowerShell background job runs a command without interacting with the current session. When you start a background job, a job object returns immediately, even if the job takes an extended time to finish.
This is code that is already in production that I use. If it does not work for you, you must have something else going on with your system.
function Invoke-PrepareScheduledTask { $taskName = "UCM_MSSQL" $task = Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue if ($task -ne $null) { Unregister-ScheduledTask -TaskName $taskName -Confirm:$false } # TODO: EDIT THIS STUFF AS NEEDED... $action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-File "C:\Invoke-MYSCRIPT.ps1"' $trigger = New-ScheduledTaskTrigger -AtStartup -RandomDelay 00:00:30 $settings = New-ScheduledTaskSettingsSet -Compatibility Win8 $principal = New-ScheduledTaskPrincipal -UserId SYSTEM -LogonType ServiceAccount -RunLevel Highest $definition = New-ScheduledTask -Action $action -Principal $principal -Trigger $trigger -Settings $settings -Description "Run $($taskName) at startup" Register-ScheduledTask -TaskName $taskName -InputObject $definition $task = Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue # TODO: LOG AS NEEDED... if ($task -ne $null) { Write-Output "Created scheduled task: '$($task.ToString())'." } else { Write-Output "Created scheduled task: FAILED." } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With