假如给定了如下路径的计划任务,需要过滤出这些路径下的所有计划任务名称
"MicrosoftWindowsData Integrity Scan"
"MicrosoftWindowsApplicationData"
"MicrosoftWindowsDefrag"
"MicrosoftWindowsDiskCleanup"
"MicrosoftWindowsDiskDiagnostic"
"MicrosoftWindowsDiskFootprint"
"MicrosoftWindowsWindows Defender"
"MicrosoftWindowsMaintenance"
如果是高版本系统,一句命令搞定
Get-ScheduledTask -TaskPath "MicrosoftWindowsData Integrity Scan","MicrosoftWindowsApplicationData","MicrosoftWindowsDefrag","MicrosoftWindowsDiskCleanup","MicrosoftWindowsDiskDiagnostic","MicrosoftWindowsDiskFootprint","MicrosoftWindowsWindows Defender","MicrosoftWindowsMaintenance" 2>$null
如果是低版本的2008R2,则没有Get-ScheduledTask -TaskPath这个命令
下面的方法稍微曲折些,不过兼容所有Windows系统,思路是,通过nirsoft工具集里的taskschedulerview的命令行获取到所有计划任务的"Task Name,Task Folder"组成的.txt文件,一行一个计划任务,Task Name和Task Folder用英文逗号隔开,然后用match过滤后再处理字符串
http://www.nirsoft.net/utils/taskschedulerview-x64.zip
cd C:taskschedulerview-x64
.TaskSchedulerView.exe /scomma tasks.txt /Columns "Task Name,Task Folder"
Get-Content C:taskschedulerview-x64tasks.txt| where-object {$_ -match " '\Microsoft\Windows\' & 'Data Integrity Scan|ApplicationData|Defrag|DiskCleanup|DiskDiagnostic|DiskFootprint|Windows Defender|Maintenance' "}
Get-Content C:taskschedulerview-x64tasks.txt| where-object {$_ -match " '\Microsoft\Windows\' & 'Data Integrity Scan|ApplicationData|Defrag|DiskCleanup|DiskDiagnostic|DiskFootprint|Windows Defender|Maintenance' "}|foreach{$_.split(",")[0]}