首页 > 解决方案 > 如何创建具有相同触发器的任务?

问题描述

如何创建具有相同触发器、属性等的已知任务。例如,它们都在用户登录时启动。这些任务有明确的名称,例如 Task_1、Task_2、Task_3 等。我不知道如何在 powershell 中使用 foreach 命令。

标签: powershell

解决方案


任务可能非常难以处理。当我第一次阅读您的问题时,听起来您想将触发器从一个任务复制到其他几个任务。这是粗略的,但你可以这样做:

$Trigger = (Get-ScheduledTask -TaskName "NameOfTheTemplatTask").Triggers[0]
Set-ScheduledTask -TaskName "NameOfDestinationTask" -Trigger $Trigger

注意:您必须更新任务名称。

鉴于您对Alex_P 的回答的评论,我理解得更好。您只需要创建一个触发器,将其存储在一个变量中,然后将该变量指定为 New-ScheduledTask cmdlet 上的 -Triggers 参数的参数。

$NewAction    = New-ScheduledTaskAction -Execute 'C:\windows\system32\notepad.exe'
$NewTrigger   = New-ScheduledTaskTrigger -AtLogOn
$NewSchedTAsk = New-ScheduledTask -Trigger $NewTrigger -Action $NewAction 
Register-ScheduledTask -TaskName TestTask -TaskPath "\" -Action $NewAction -Trigger $NewTrigger

显然这只是一个示例,您需要根据自己的环境和目的更新信息。

注意:不要忘记Register-ScheduledTask

您可以将其包装在 ForEach 循环中,以获得尽可能多的任务......

$NewAction  = New-ScheduledTaskAction -Execute 'C:\windows\system32\notepad.exe'
$NewTrigger = New-ScheduledTaskTrigger -AtLogOn

$Tasks = @('Task_1', 'Task_2', 'Task_3')

ForEach($Task in $Tasks)
{
    $NewSchedTAsk = New-ScheduledTask -Trigger $NewTrigger -Action $NewAction 
    Register-ScheduledTask -TaskName $Task -TaskPath "\" -Action $NewAction -Trigger $NewTrigger
}

同样,这些只是为您提供路线图的示例,可以为您自己的环境解决这些问题。

您还应该查看托管所讨论 cmdlet的 scheduleTask 模块上的 MS Docs 。你会发现类似的例子,比我在飞行中拼凑起来的更好。


推荐阅读