|
24H2 powershell:
Get-ScheduledTask| Select-Object -Property TaskName|Out-File 全部任务列表.txt -Encoding UTF8
Get-Content 全部任务列表.txt | ForEach-Object { $_.Trim() } | Set-Content 去除任务名称前后空格.txt
$file1 = Get-Content '计划任务保留-任务列表.txt'
$file2 = Get-Content '去除任务名称前后空格.txt'
$file2 | Where-Object { $_ -notin $file1 } | Set-Content -Path '计划任务禁用-任务列表.txt'
$taskNames = Get-Content '计划任务禁用-任务列表.txt'
foreach ($taskName in $taskNames) {
$task = Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue
if ($task) {
try {
Disable-ScheduledTask $task | Out-Null
"任务: $taskName 已禁用."
} catch {
"无法禁用任务 '$taskName': $_"
}
} else {
"未找到任务 '$taskName'"
}
}
说明(禁用/删除可能需要提权System):
1.使用Get-ScheduledTask获取全部任务然后导出.
2.因为导出的格式前后有相当多的空格.需要处理一下.
3.创建一个文档.添加你需要保留的任务名称.每行一个.然后对比筛选出需要禁用的任务.
4.最后遍历文件逐个禁用.改一下代码就可以变成删除任务.
5.任务名可能存在相同的情况.所以需要注意.26100.1591就发现3个同样名称的任务名.要么单独添加操作任务的代码.要么对Unregister-ScheduledTask -TaskPath做出限定.
6.最后再添加另外脚本.对注册表和系统目录的已清空任务的目录清理.就干净了.目前还在监测使用是否有问题.完整的代码和需要保留的任务以后放出
7.重要的事情说3遍.对计划任务请谨慎操作.对计划任务请谨慎操作.对计划任务请谨慎操作.会影响系统诸多功能.
|
|