使用 Powershell 查询 schtasks

jdi*_*iaz 8 powershell windows-7 scheduled-task

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

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

schtasks /query | where { $_.TaskName -eq "myTask" } 
Run Code Online (Sandbox Code Playgroud)

问题是我没有这个 schtasks 为 where 函数返回一个格式正确的列表。

我也试过:

schtasks /query /FO LIST
schtasks /query | format-list | where ....
Run Code Online (Sandbox Code Playgroud)

那些也不起作用。

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

小智 8

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

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

Import-Module TaskScheduler
Get-ScheduledTask -Recurse
Run Code Online (Sandbox Code Playgroud)

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

Get-ScheduledTask -Recurse |  Where-Object { $_.Name -like "*Task*"}
Run Code Online (Sandbox Code Playgroud)

一般来说,您会发现 PowerShell 社区已经采取了很多难以使用的命令行,如 schtasks,并将它们变成易于使用的 cmdlet,如 Get-ScheduledTask。

也可以看看:

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

希望这可以帮助