使用powershell更改任务计划程序中任务的属性

使用powershell更改任务计划程序中任务的属性,powershell,Powershell,我在一个任务中有两个触发器。第一个在特定时间运行。第二个从登录开始,每10分钟运行一次。我有很多类似的任务,比如这种情况。我想使用powershell将属性从10分钟更改为5分钟,并在登录后无限期运行。如何指定第二个触发器 $Task=Get ScheduledTask-TaskName“Task” $Task.Triggers.LogonTriggers.repeation.Duration=“” $Task.Triggers.repeation.Interval=“PT10M”您可以修改$T

我在一个任务中有两个触发器。第一个在特定时间运行。第二个从登录开始,每10分钟运行一次。我有很多类似的任务,比如这种情况。我想使用powershell将属性从10分钟更改为5分钟,并在登录后无限期运行。如何指定第二个触发器

$Task=Get ScheduledTask-TaskName“Task”

$Task.Triggers.LogonTriggers.repeation.Duration=“”
$Task.Triggers.repeation.Interval=“PT10M”

您可以修改$Task对象并将其传递到设置的ScheduledTask中,该任务将应用您所做的更改。在特定时间运行的第一个触发器将设置其StartBoundary属性,在登录时启动的第二个触发器将不设置此属性,因此我们将使用该属性的值来确保更改正确的触发器

$Task = Get-ScheduledTask -TaskName "Task"
$RepeatingTrigger = $Task.Triggers | Where-Object { $_.StartBoundary -eq $null }
$RepeatingTrigger.Repetition.Interval = "PT5M"
Set-ScheduledTask -InputObject $Task

谢谢你的帮助。我可以问一下,这个触发器是否是第一个触发器,我该如何放置它?我已经根据它的属性选择了要更改的触发器,这样您就不必担心它是要添加的第一个还是第二个触发器。答案中的方法将始终获得没有StartBoundary的触发器,即在登录时启动的触发器,而不是在设定时间启动的触发器。如果希望始终更改第一个触发器,可以执行类似于
$RepeatingTrigger=$Task.Triggers[0]
的操作,但是,如果您要对许多计划任务执行此更改,并且触发器的添加顺序与现有任务无限期运行时不起作用的顺序不同,那么如果您希望确保将EndBoundary属性设置为$null,则答案中的命令不会更改此顺序。您可以深入到$Task的属性中,查看用于设置触发器类型的内容,它看起来可能是一个名为StateChange的属性,但我认为您需要直接调用.NET方法来设置它,有关如何开始使用它的更多信息,请参见此处-,这完全超出了您的问题范围。该cmdlet适用于计划作业而不是计划任务,它们不是一回事。您的问题询问了一项计划任务。如果您运行我的答案中的命令,但将“PT5M”更改为“PT3M”,则任务将每3次重复一次minutes@zexal985236如果答案解决了您最初提出的问题,您应该单击灰色复选标记接受它