使用 Powershell 查询 schtasks

使用 Powershell 查询 schtasks

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

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

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

问题是我不知道这个 schtasks 是否返回正确格式的列表以便 where 函数能够工作。

我也尝试过:

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

这些也不起作用。

使用 Win7 查询本地计算机上的 schtasks 并对其进行过滤的最佳方法是什么

答案1

您可以尝试使用 schtasks,它可以让您解析文本。这几乎总是容易出错,而且肯定比获取命令的输出更困难。

恰巧有一个 TaskScheduler 模块PowerShell包。安装 PowerShell 包后,要获取所有计划任务,请使用:

Import-Module TaskScheduler
Get-ScheduledTask -Recurse

由于这些是真实的对象,因此要查找特定名称的任务,您可以使用:

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

总的来说,您会发现 PowerShell 社区已经将许多难以使用的命令行(如 schtasks)转变为易于使用的 cmdlet,如 Get-ScheduledTask。

也可以看看:

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

希望这可以帮助

答案2

如果你不需要在 powershell 中执行此操作,那么下面的方法就可以了

schtasks /query | findstr /i "mytask"

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

答案3

这是一篇博客文章我写过关于如何做到这一点的文章。本质上,我获取了 /FO LIST /V 的输出,将其写入文件,然后使用 import-csv 将其作为对象导入

答案4

你想太多了。

您想要的命令行 schtasks /query /s %computername%|FIND /I "%name_of_task%"

示例 schtasks /query /s server01|FIND /I "schedule"

相关内容