【问题标题】:Edit triggers for a Windows Task Scheduler Task编辑 Windows 任务计划程序任务的触发器
【发布时间】:2013-03-01 19:54:38
【问题描述】:

我们目前在 server 2008 机器上的 Windows 任务计划程序中安排了数百个任务。有许多任务无限期地每半小时运行一次。有没有办法使用脚本来更改这些任务的触发器,以便它们只在 M-F 半小时运行一次?

【问题讨论】:

  • 任务如何命名?您是否遵循命名约定?
  • 我们做到了!项目名称 - Job_Name_foo
  • 这是肯定的,我正在尝试一个解决方案,我们可以使用 VBS 递归处理 XML 并将 ScheduleByDaily 更改为 ScheduleByWeek,然后为 MON、TUE、WED 添加空子节点,THU,FRI...唯一的问题是我对VBS不是特别熟悉
  • 哈哈,我听说 =] 通过这些实现一些东西应该不难。感谢您的所有帮助!

标签: powershell cmd scheduled-tasks powershell-2.0 windows-server-2008-r2


【解决方案1】:

是的,如果您使用TaskService COM object。有关使用此对象的一些示例脚本,请参见以下内容:

  1. Rename Scheduled Tasks in Windows 7, Windows Server 2008, and Windows Vista

  2. How-To: Use PowerShell to Report on Scheduled Tasks

  3. Updating a Scheduled Task's Credentials

    脚本:https://gist.github.com/Bill-Stewart/363fdf761499a071439c8ac0c18dcd54

在 Windows XP/Server 2003 之后,使用 schtasks.exe 实用程序相当有限。

【讨论】:

  • 我认为您需要为此更新到 PS v3。 microsoft.com/en-us/download/details.aspx?id=34595
  • 我写的脚本(见上面的链接)只需要版本 2;第 3 版不是必需的。
  • Bill,这就是我最终的结果,非常感谢您的指导
  • 很高兴你们知道了!
【解决方案2】:

以下是 /SC 的允许选项:

/SC allows for the following frequency schedules:
        MINUTE:     1 - 1439 minutes.
        HOURLY:     1 - 23 hours.
        DAILY:      1 - 365 days.
        WEEKLY:     weeks 1 - 52. (/D MON,TUE,WED,THU,FRI,SAT,SUN)
        ONCE:       No modifiers.
        ONSTART:    No modifiers.
        ONLOGON:    No modifiers.
        ONIDLE:     No modifiers.
        MONTHLY:    1 - 12, or FIRST, SECOND, THIRD, FOURTH, LAST, LASTDAY.**

我一直在编辑这个,因为我对我的发现不满意...

我查看了 SCHTASKS 并注意到您无法通过 CMD 更改时间表。

来自technet.microsoft
更改任务的以下一项或多项属性。

  • 任务运行的程序 (/tr)。
  • 运行任务的用户帐户 (/ru)。
  • 用户帐户的密码 (/rp)。

我将继续对此进行一些研究,并希望通过可行的解决方案编辑此答案。

编辑
如果你查看 C:\windows\system32\tasks 你会发现你所有的计划任务 它们没有被列为 XML,但它们确实是 XML 我认为应该做的是使用任何一个; VBS 或 C# 应用程序挖掘到以下每个节点
//Task/Triggers/CalendarTrigger 删除 /ScheduleByDay 及其子节点 /DaysInterval //Task/Triggers/CalendarTrigger 创建如下:

 <?xml version="1.0" encoding="UTF-16"?>
   -<Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task" version="1.2"> 
     +<RegistrationInfo> 
     -<Triggers> 
       -<CalendarTrigger>
            <StartBoundary>2013-03-13T15:20:00</StartBoundary>
            <Enabled>true</Enabled> 
             -<ScheduleByWeek> 
               -<DaysOfWeek> 
                    <Monday/>
                    <Tuesday/> 
                    <Wednesday/> 
                    <Thursday/> 
                    <Friday/> 
                </DaysOfWeek>
                <WeeksInterval>1</WeeksInterval> 
              </ScheduleByWeek> 
       </CalendarTrigger> 
     </Triggers>

如果有人能接受并使用这个 - 我认为我在下周可以做很多事情。

【讨论】:

  • IIRC,新的任务计划程序 API 的 schtasks.exe 命令非常有限。这就是为什么我建议直接使用 COM 对象访问调度程序。
  • @AbqBill 是的,我明白了……很臭 :(
  • 不知道为什么我一直为此投票,我不一定提供任何解决方案:P 我仍在寻找...
  • 它得到了没有实际尝试过的人的支持。 :)
  • 我看了一些,Windows(对我来说很不幸)对这些任务文件进行哈希处理,将它们存储在注册表中,并将哈希值与文件进行比较,这样您就无法真正编辑它们。该死的微软,让事情变得安全!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 2011-02-18
相关资源
最近更新 更多