scheduled tasks don't show up in Get-ScheduledTask result
Asked Answered
C

3

10

I have defined some scheduled task using Windows Task Scheduler GUI under "" [default] path but when i run Get-ScheduledTask in powershell, it does not return them. why?

I have tried with Get-ScheduledTask -TaskName "MyTaskName" with one of my task name but it comes up with "No MSFT_ScheduledTask objects found with property 'TaskName' equal to 'MyTaskName'"

Actually I have tried https://library.octopusdeploy.com/step-template/actiontemplate-windows-scheduled-task-disable but it doesn't work so I have tried running script directly.

UPDATE I have found the following script to get task list on http://www.fixitscripts.com/problems/getting-a-list-of-scheduled-tasks:

# PowerShell script to get scheduled tasks from local computer
$schedule = new-object -com("Schedule.Service")
$schedule.connect() 
$tasks = $schedule.getfolder("\").gettasks(0)
$tasks  | Format-Table   Name , LastRunTime    # -AutoSize
IF($tasks.count -eq 0) {Write-Host “Schedule is Empty”}
Read-Host
Castaway answered 15/2, 2017 at 4:29 Comment(2)
What does "schtasks /query /v" in a command prompt return? Do you see your task?Sarraute
@DavidBrabant it returns a long length of information which is difficult to find an specific task name in it.Castaway
S
16

UAC

The result is likely affected by UAC. To see everything try right clicking the PowerShell icon, select Run as Administrator and then run your Get-ScheduledTask command again and see if that changes anything.

Further reading: http://david-homer.blogspot.co.uk/2017/10/not-all-scheduled-tasks-show-up-when.html

Sinter answered 24/10, 2017 at 14:37 Comment(2)
When I try to run the Get-ScheduledTask from a terminal opened with "Run As Administrator" I alwas get the error Get-ScheduledTask: Catastrophic failure . I get the error in Powershell 1 and 7Subinfeudate
Sounds like an issue with one of the Scheduled Tasks themselves. Do you get the error when running the task scheduler user MMC? I'd take a look at the following folder. c:\windows\system32\Tasks You likely have a corrupt task file in this folder.Sinter
M
5

Have you tried using a com object? This code works for me:

# FOR A REMOTE MACHINE
$s = 'SERVER_NAME' # update this with server name
($TaskScheduler = New-Object -ComObject Schedule.Service).Connect($s)


# FOR LOCAL MACHINE
($TaskScheduler = New-Object -ComObject Schedule.Service).Connect()

#now we can query the schedules...
cls;$TaskScheduler.GetFolder('\').GetTasks(0) | Select Name, State, Enabled, LastRunTime, LastTaskResult | Out-GridView

This code will retrieve a particular task and enable it:

$task = $TaskScheduler.GetFolder('\').GetTask("TASKNAME")
$task.Enabled = $true
Madelynmademoiselle answered 15/2, 2017 at 10:10 Comment(6)
the first one is not working with '.' and neither without it. with '.' it gets the following error Exception calling "GetFolder" with "1" argument(s): "This operation is supported only when you are connected to the server"Castaway
the second one is getting the following error: Exception calling "GetTask" with "1" argument(s): "Access is denied.Castaway
Sorry, not at a windows machine now. Try running in an elevated PowerShell session. Also, for a local task, the syntax needs to be slightly different - see my edit.Madelynmademoiselle
Again with the lastest changes, the same error Exception calling "GetFolder" with "1" argument(s): "This operation is supported only when you are connected to the server.Castaway
Apologies, @mehran. You still need to connect, which I didn't test. See my latest edit.Madelynmademoiselle
I only get one task with .GetTasks(0), and there are many others.Dispraise
E
2

When running Get-ScheduledTask from a user-level prompt, even if the user is an administrator, they will see only the tasks that they can read with user-level permissions. Seeing them in the TaskSchd.Msc window indicates that program is running with different permissions.

Therefore, running a PowerShell prompt as administrator solves the problem.

The same issue occurs when using SchTasks.exe from a command prompt.

Entreat answered 19/3, 2018 at 13:27 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.