在task Scheduler中使用Powershell过滤触发器类型删除任务?



我在一些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_TaskLogonTriggerMSFT_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
}
}

最新更新