编辑 Windows 任务计划程序任务的触发器
Posted
技术标签:
【中文标题】编辑 Windows 任务计划程序任务的触发器【英文标题】:Edit triggers for a Windows Task Scheduler Task 【发布时间】:2013-03-01 19:54:38 【问题描述】:我们目前在 server 2008 机器上的 Windows 任务计划程序中安排了数百个任务。有许多任务无限期地每半小时运行一次。有没有办法使用脚本来更改这些任务的触发器,以便它们只在 M-F 半小时运行一次?
【问题讨论】:
任务如何命名?您是否遵循命名约定? 我们做到了!项目名称 - Job_Name_foo 这是肯定的,我正在尝试一个解决方案,我们可以使用 VBS 递归处理 XML 并将 ScheduleByDaily 更改为 ScheduleByWeek,然后为 MON、TUE、WED 添加空子节点,THU,FRI...唯一的问题是我对VBS不是特别熟悉 哈哈,我听说 =] 通过这些实现一些东西应该不难。感谢您的所有帮助! 【参考方案1】:是的,如果您使用TaskService COM object。有关使用此对象的一些示例脚本,请参见以下内容:
Rename Scheduled Tasks in Windows 7, Windows Server 2008, and Windows Vista
How-To: Use PowerShell to Report on Scheduled Tasks
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(对我来说很不幸)对这些任务文件进行哈希处理,将它们存储在注册表中,并将哈希值与文件进行比较,这样您就无法真正编辑它们。该死的微软,让事情变得安全!以上是关于编辑 Windows 任务计划程序任务的触发器的主要内容,如果未能解决你的问题,请参考以下文章