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
-
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
Joey : You're on the right track but writing to a temporary file is unnecessary here: `schtasks /query /fo csv /v|convertfrom-csv` works just finejdiaz : this is neat but still not easily queryableMike Shepard : 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.From Mike Shepard -
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'}From tony roth -
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 -RecurseSince 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
Mike Shepard : This works great if you're using Win2k8 boxes (or vista/W7). Unfortunately, it doesn't work with W2k3 servers (which are still very common in my environment).From Write-PowerShell -
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"
From Chris Gould
0 comments:
Post a Comment