8

On a Windows7 machine I am trying I can run a query to view all the scheduled tasks using schtasks.exe

This is fine but I would also like to filter the result set using something like

schtasks /query | where { $_.TaskName -eq "myTask" } 

The problem is I don't this schtasks returns a properly formatted list for the where function to work.

I've also tried:

schtasks /query /FO LIST
schtasks /query | format-list | where ....

those don't work either.

What would be the best way to query the schtasks on a local computer using Win7 and be able to filter them

jdiaz
  • 1,189
  • 3
  • 16
  • 16

6 Answers6

8

You could try to use schtasks, which will leave you parsing text. This is almost always error prone, and definitely more difficult than it is to take the output of a command.

There happens to be a TaskScheduler module in the PowerShellPack. Once you install the PowerShell pack, to get all of the scheduled tasks, use:

Import-Module TaskScheduler
Get-ScheduledTask -Recurse

Since these are real objects, to find a task of a particular name, you can use:

Get-ScheduledTask -Recurse |  Where-Object { $_.Name -like "*Task*"}

In general, you will find that the PowerShell community has taken a lot of harder to use command lines, like schtasks, and turned them into easy-to-use cmdlets, like Get-ScheduledTask.

See Also:

Sending Automated Emails using the TaskScheduler Module

Hope this helps

Glorfindel
  • 1,213
  • 4
  • 15
  • 22
2

Here's a blog post I wrote about doing this. Essentially, I took the output of the /FO LIST /V, wrote that to a file, and imported it back in as objects using import-csv

Mike Shepard
  • 748
  • 3
  • 7
  • 2
    You're on the right track but writing to a temporary file is unnecessary here: `schtasks /query /fo csv /v|convertfrom-csv` works just fine – Joey Jun 18 '10 at 21:39
  • this is neat but still not easily queryable – jdiaz Jun 20 '10 at 04:19
  • Johannes: you're right, but I really (really) dislike properties that have embedded spaces/colons/slashes. jdiaz: What's not queryable? The script I posted and Johannes' revision both return native powershell objects with properties. They should be just as queryable as any other powershell entities. – Mike Shepard Jun 28 '10 at 03:08
  • 1
    Truly - they are queryable...`schtasks /query /fo csv /v /s "myserver" | convertfrom-csv | Select TaskName, "Last Run Time", Author | ? {$_.Author -notmatch "microsoft|N/A|Author"}` will provide you with all the custom scheduled tasks you have. – SliverNinja - MSFT Jan 29 '14 at 22:56
2

if you don't need to do it in powershell then the following will work

schtasks /query | findstr /i "mytask"

ps version
schtasks /query | ?{$_ -like 'mytask'}

tony roth
  • 3,884
  • 18
  • 14
2

You may try:

schtasks /query /FO CSV | ConvertFrom-CSV | Where { $_.TaskName -eq "myTask" } 

The trick is in converting output to CSV first, and then back to a powershell object.

Oleks
  • 141
  • 5
0

You are overthinking it.

Commandline for what you want schtasks /query /s %computername%|FIND /I "%name_of_task%"

example schtasks /query /s server01|FIND /I "schedule"

-2

The best options is from Alex because you dont need library and you will convert the string's answers from schtasks in Powershell object.