【问题标题】:Change a property of a task in task scheduler using powershell使用 powershell 在任务计划程序中更改任务的属性
【发布时间】:2020-05-05 00:24:34
【问题描述】:

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

$Task = Get-ScheduledTask -TaskName "Task"

$Task.Triggers.LogonTriggers.Repetition.Duration = "" $Task.Triggers.Repetition.Interval = "PT10M"

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您可以修改 $Task 对象并将其传递给 Set-ScheduledTask,它将应用您所做的更改。在特定时间运行的第一个触发器将设置其 StartBoundary 属性,从 Logon 开始的第二个触发器不会设置此属性,因此我们将使用该值来确保我们更改正确的触发器。

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

    【讨论】:

    • 感谢您的帮助。请问这个触发器是不是第一个触发器,我该怎么说?
    • 我已经根据它的属性选择了要更改的触发器,这样您就不必担心它是要添加的第一个触发器还是第二个触发器。答案中的方法总是会得到没有 StartBoundary 的触发器,即在 LogOn 开始的触发器,而不是在设定时间开始的触发器。如果您想始终更改第一个触发器,您可以执行$RepeatingTrigger = $Task.Triggers[0] 之类的操作,但如果您要对许多计划任务执行此更改,并且触发器并不总是以相同的顺序添加,则无法正常工作
    • 如果您的现有任务无限期运行,那么答案中的命令不会改变这一点,如果您想确保将 EndBoundary 属性设置为 $null。您可以深入了解 $Task 的属性以查看用于设置触发器类型的内容,它看起来可能是一个名为 StateChange 的属性,但我认为您需要直接调用 .NET 方法来设置它,以获取更多信息有关入门的信息,请参见此处-docs.microsoft.com/en-us/powershell/module/…,这超出了您的问题范围。
    • 该 cmdlet 用于计划作业而不是计划任务,它们不是一回事。您的问题询问了计划任务。如果您运行我回答中的命令,但将“PT5M”更改为“PT3M”,则任务将每 3 分钟重复一次
    • @zexal985236 如果答案已经解决了您最初提出的问题,您应该点击灰色复选标记接受它
    猜你喜欢
    • 2017-07-02
    • 1970-01-01
    • 2012-01-25
    • 2014-12-28
    • 2017-05-28
    • 1970-01-01
    • 2021-03-29
    • 2020-01-12
    • 1970-01-01
    相关资源
    最近更新 更多