我在一些Windows 10
机器上有一个特定的Task Scheduler
任务。
该任务有At system startup
触发器。虽然任务在不同的系统上是相同的,但是任务名在某些机器上可能不同。
我需要从每台机器上删除这个任务。为此,我希望在每个系统上使用命令Unregister-ScheduledTask
运行Powershell
脚本。
然而,我注意到TaskName
可能是我可以使用的这个命令的主要选项。我希望基于At system startup
触发器进行过滤,只是为了确保不同的名称不会导致删除在某些系统上不成功。
是否有其他的技巧来删除基于触发器类型的任务?
我当前拥有的,使用任务名:
if ($(Get-ScheduledTask -TaskName "SendEmailAtStartup" -ErrorAction SilentlyContinue).TaskName -eq "SendEmailAtStartup") {
Unregister-ScheduledTask -TaskName "SendEmailAtStartup" -Confirm:$False
}
我想你是想看看启动时触发的任务。你在开始的时候安排了什么吗?.Triggers()
字段中有几个值可能适合您。基于这个列表。您可能需要MSFT_TaskLogonTrigger
或MSFT_TaskBootTrigger
,所以我们将使用它们。
我将使用if/elseif链在这里给你一些选项。
$schedtasks = Get-ScheduledTask | Select-Object -Property *
foreach ($task in $schedtasks) {
if ($task.triggers -like 'MSFT_TaskLogonTrigger') {
## do this for logon trigger
Write-Warning -Message ('I found {0}.taskname with the LOGON trigger!' -f $task)
## do some stuff
}
elseif ($task.triggers -like 'MSFT_TaskBootTrigger') {
## do this for boot trigger
Write-Warning -Message ('I found {0}) with the BOOT trigger!' -f $task.taskname)
## do some cool stuff
}
else {
## nothing was found
Write-Warning -Message 'This task didn't match any of our triggers.'
## but we will might want to log this task or tell someone
}
}