使用Powershell查询schtasks

在Windows7机器上,我正在尝试使用schtasks.exe来运行查询来查看所有计划的任务

这很好,但我也想过滤使用类似的结果集

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

问题是我不这schtasks返回一个正确的格式化列表的wherefunction工作。

我也试过:

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

那些也不起作用。

使用Win7查询本地计算机上的schtasks并且能够过滤它们的最好方法是什么?

你可以尝试使用schtasks,这将离开你parsing文本。 这几乎总是容易出错,而且要比输出一个命令更困难。

碰巧在PowerShellPack中有一个TaskScheduler模块。 一旦安装了PowerShell包,要获取所有计划任务,请使用:

 Import-Module TaskScheduler Get-ScheduledTask -Recurse 

由于这些都是真实的对象,所以要查找某个特定名称的任务,可以使用:

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

一般来说,你会发现PowerShell社区花费了更多的时间来使用命令行,比如schtasks,并把它们变成了简单易用的cmdlet,比如Get-ScheduledTask。

也可以看看:

使用TaskScheduler模块发送自动电子邮件

希望这可以帮助

如果你不需要在PowerShell中做到这一点,那么下面的工作

schtasks / query | findstr /我“mytask”

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

这里是我写这篇文章的博文 。 本质上,我把/ FO LIST / V的输出,写到一个文件中,并用import-csv作为对象导回

你可以尝试:

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

诀窍在于首先将输出转换为CSV,然后再转换为PowerShell对象。

你正在超越它。

命令行为你想schtasks /查询/ s%computername%| FIND /我“%name_of_task%”

示例schtasks / query / s server01 | FIND / I“schedule”

最好的select是从亚历克斯,因为你不需要库,你会转换从Powershell对象schtasksstring的答案。