![使用 Powershell 查询 schtasks](https://linux22.com/image/516744/%E4%BD%BF%E7%94%A8%20Powershell%20%E6%9F%A5%E8%AF%A2%20schtasks.png)
在 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。
也可以看看:
希望这可以帮助
答案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"