微软文档居然搜不到了
Windows任务计划程序已经存在许多年了,原来在微软的TechNet上有详细的操作介绍的,现在发现网站改版,原来的介绍居然搜索不到了,微软的平台上出现这种事情,也是比较吃惊了。
添加任务计划不难
添加任务计划有两种方式,一种是通过图形界面进行,一种是使用脚本或者编程的方式进行。
图像界面方式,可以通过直接运行taskschd.msc打开,或者在windows的搜索栏中搜索任务计划,Windows会找到这个程序。
在左边的任务计划程序库中点击右键,然后点击“创建任务”,再往后,按照弹出窗口的内容,一步一步操作就好,整个过程都比较简单。
然而,复杂的问题是,在创建计划的时候,有不少的选项,选还是不选,还真是让人觉得困惑。下面主要记录对这些配置的解释。
任务计划的处理逻辑
计划有两个重点,一个就是触发器,按照各种事件来启动任务中操作的执行,另外一个是错误处理,这个在后面的配置中也有所体现。
任务计划的配置
安全选项
默认情况下,计划的任务在已计划任务的用户的安全上下文中运行,而且只有在该用户登录(触发任务时)时才运行。若要修改此任务,请在显示任务的属性时,在“常规”选项卡的“安全选项”部分中更改设置。
通过单击**“更改用户或组”按钮**,可以为要在其下运行的任务选择不同的用户帐户或组帐户。如果用户帐户不是管理员组的成员,则该按钮的标题为“更改用户”。不在管理员组中的用户帐户只能为要在其下运行的任务指定用户帐户。
可以指定即使在触发任务时计划在其下运行任务的帐户未登录,该任务也应该运行。若要执行此操作,请选择标记为“不管用户是否登录都要运行”的单选按钮。如果选择了此单选按钮,则任务不会交互运行。若要使任务交互运行,请选择“只在用户登录时运行”单选按钮。
如果选择了“不管用户是否登录都要运行”选项,则在保存任务时,系统可能会提示您提供帐户凭据,无论是否选中标记为“不存储密码”的复选框。如果在触发对应任务时该帐户未登录,则服务将使用已保存的凭据以指定帐户运行,并且在使用生成的令牌时将不受约束。
如果选中了标记为“不存储密码”的复选框,则任务计划程序不会存储在本地计算机上提供的凭据,但会在正确验证用户身份后放弃这些凭据。需要运行任务时,任务计划程序服务将使用 Kerberos 身份验证协议的“用户服务”(S4U) 扩展来检索用户的令牌。
如果所计划的任务需要管理员权限,如果要运行该任务,还必须确保选中了“使用最高权限运行”复选框。
最下方有一个”隐藏“选项,选中这个选项之后,任务在运行的时候将不弹出可见的运行窗口。(任务还是会执行,只是窗口被隐藏了)
触发器的高级设置
触发器的高级设置部分需要记录下设置的含义。
任务最多延迟时间(随机延迟):使用此设置,可以指定触发任务后延迟任务运行的时间。如果使用的是基于时间的触发器(“制定计划时”),则延迟时间将为触发任务的时间与此设置中指定的时间之间的随机时间。如果计划在下午 1:00 触发任务,并且将“任务最多延迟时间(随机延迟)”设置设为 5 分钟,则该任务将在下午 1:00 与 1:05 之间的某个时间运行。
重复任务间隔:使用此设置,可以为任务设置重复时间间隔。任务将运行,等待指定的时间间隔,然后再次运行。此循环将继续下去,直到满足持续时间。
**任务的运行时间超过此值则停止执行:**使用此设置,可以通过对允许任务运行(执行操作)的时间设置时间限制来停止长时间运行的任务。
**到期日期:**使用此设置,可以设置触发器过期的日期和时间。触发器过期后,无法使任务运行。此时间相对于在运行任务的计算机上设置的时区。选中“跨时区同步”复选框,以使时间相对于协调世界时 (UTC),而不是在运行任务的计算机上设置的时区。如果要协调一组任务使其在多个时区中同时过期,请使用“跨时区同步”设置。
**已启用:**使用此设置,可以启用或禁用任务。启用的任务可以运行,但禁用的任务在启用前无法运行。
操作
任务计划的操作属性也比较简单。
”启动程序“中发邮件和显示消息都已经启用,选不了其它的的了
”程序或者脚本“文本框中,输入要启动的程序或脚本的名称。如果程序或脚本接受命令行参数,则可以在“添加参数(可选)”文本框中提供这些参数。在“起始于(可选)”文本框中,可以为执行程序或脚本的命令行指定工作目录。此目录应该为程序或脚本文件的路径,或可执行文件所使用的文件的路径。需要注意的是,最好要配置一下工作目录,因为,默认的工作目录为:C:\Windows\System32,在该目录下运行有诸多限制,可能导致意外情况发生。
另外需要提一下的是,一个计划中可以包含多个”操作“,在执行的时候,是按顺序依次执行操作列表中的”操作“。
条件
条件控制任务是否运行。如果在触发任务使之启动后满足任务的所有条件,则任务将运行。条件分为三种类别:空闲条件、电源条件和网络条件。任务的条件显示在“任务属性”对话框或“创建任务”对话框的“条件”选项卡中。
空闲条件
可以设置一个条件,通知当触发器被激活时,仅当计算机在指定的一段时间内一直处于空闲状态时,任务才运行。设置此条件时,还可以设置(在触发任务后)等待计算机进入空闲状态的时间。
任务计划程序服务每 15 分钟就会检查计算机是否处于空闲状态。屏幕保护程序正在运行时,就认为计算机处于空闲状态。在屏幕保护程序没有运行时,如果在过去十五分钟的 90% 时间内,CPU 使用率为 0% 且磁盘输入或输出为 0%,并且在此时间段内没有任何键盘或鼠标输入,即认为计算机处于空闲状态。任务计划程序服务检测到计算机处于空闲状态后,该服务仅等待用户输入以标记空闲状态的结束。
如果将任务设置为只有在计算机处于空闲状态 30 分钟后启动,并且该任务等待计算机处于空闲状态 10 分钟,则只有在激活触发器之前计算机处于空闲状态 25 分钟时,该任务才会在 5 分钟内启动。如果计算机在激活触发器后 5 分钟进入空闲状态,则任务不会启动。
如果为任务选择了“如果计算机不再空闲,则停止”条件,并且在计算机处于空闲状态时任务正在运行,则当计算机不再空闲时,任务将停止运行。如果选择了“如果空闲状态继续,则重新启动”条件,则根据此条件停止的任务在下次计算机进入空闲状态时将再次开始运行。
电源条件
可以设置一个条件,通知激活任务触发器时,任务只有在计算机使用交流电源(而不是电池电源)时才运行。如果设置了此条件,则还可以设置一个条件,即如果计算机转用电池电源,则停止任务。如果为任务设置了这两个条件,就已确保了只有在计算机使用交流电源时任务才运行。
还可以设置一个条件,通知任务从睡眠模式唤醒计算机,以便在激活触发器时运行任务。设置唤醒计算机运行任务的条件之前,请确保任务不会导致计算机在不方便的时候唤醒。
任务计划程序服务唤醒计算机运行任务时,屏幕可能始终处于关闭状态,即使计算机不再处于睡眠模式或休眠模式也是如此。Windows 检测到用户返回使用计算机时,屏幕将打开。
网络条件
可以设置一个条件,只有在特定的已命名网络连接可用或任何网络连接都可用时(激活任务的触发器时)才运行任务。如果任务操作需要网络连接才能执行,请设置此条件。
任务设置
任务设置指定运行、停止或删除任务的方式。任务的设置显示在“任务属性”对话框或“创建任务”对话框的“设置”选项卡中。以下列表包含任务设置的说明。
允许按需运行任务:通过允许按需运行任务,可以指定在计划运行任务前后是否可以手动运行该任务。默认设置允许用户按需随时运行任务。有关如何按需运行任务的详细信息,请参阅按需运行任务。
如果错过了计划开始操作,立即启动任务:如果选中了此设置,则任务计划程序服务将启动任务(如果计划在特定时间运行该任务),但是由于某种原因(例如,计算机已关闭或任务计划程序服务处于繁忙状态),该任务未被激活。任务计划程序服务不会在错过了该任务后立即启动该任务。默认情况下,该服务会等待十分钟,之后才启动错过的任务。
如果任务失败,按以下频率重新启动: <时间段>:如果任务无法运行(任务的上次运行结果不成功),请使用此设置重新启动任务。可以指定任务重新启动尝试之间的时间间隔,以及尝试重新启动任务的次数。
如果任务运行时间超过以下时间,停止任务: <时间段>:使用此设置,可以限制允许任务运行的时间。使用此设置可以限制可能需要大量时间执行(从而为用户带来不便)的任务。
如果请求后此任务还在运行,强行将其停止:如果选择了上一个设置以及此设置,则当任务未对(上一个设置的)停止请求做出响应时,将强制任务停止。此设置其实是上一个设置的附属设置。
如果任务没有计划再次运行,则在此之后删除该任务: <时间段>:如果选择了此设置,则在未计划再次运行任务时,任务计划程序服务将自动删除该任务。删除任务之前,任务计划程序服务将等待指定的时间段。如果未选择此设置,则任务计划程序服务不会自动删除任务。为了选择此设置,任务至少必须包括一个有截止日期的触发器。
如果此任务已经运行,以下规则适用:
根据计划需要启动一个任务的时候,可能发现此任务的实例正在运行,因此必须指定在任务的另一个实例已经运行时,任务计划程序服务应如何运行该任务:
**请勿启动新实例:**任务计划程序服务不会运行任务的新实例,也不会停止已经运行的实例。
**并行运行新实例:**任务计划程序服务将并行运行任务的新实例以及已经运行的实例。
**对新实例排队:**任务计划程序服务会将任务的新实例添加到该服务将运行的任务队列中,并且该服务不会停止已经运行的任务的实例。
**停止现有实例:**任务计划程序服务将停止已经运行的任务的实例,但会运行任务的新实例。
管理任务计划的命令行方式
另外,还可以使用schtask实用程序创建、删除、查询、更改、结束或显示有关计划任务的详细信息,只需要在cmd控制台中,输入schtasks /?
就可以查看该工具的帮助。
这个工具可以实现上述界面里能做的所有事情。比较常用的就是可以用命令直接启动一个任务计划,也可以把启动命令放在一个bat文件中,需要的时候就双击执行,如下所示:
SCHTASKS /Run /TN "\备份\启动备份"
TSG
任务计划程序服务是否运行
如果在计划任务或使任务正确运行时遇到了问题,请首先确保任务计划程序服务正在运行。如果单击“开始”按钮、再依次单击“控制面板”、“系统和维护”、“管理工具”,然后单击“服务”,则可以验证服务是否正在运行,并且可以验证任务计划程序服务的状态是否为“已启动”。
注意;计算机在安全模式下运行时,无法使用任务计划程序服务。
任务在预期时间运行时没有运行
如果计划的任务在预期运行时没有运行,请确保该任务已启用,同时还要检查任务的触发器,以确保它们设置正确。此外,还应检查任务的历史记录,以查看任务何时启动,并检查错误。
在右侧的操作面板上就可以打开历史记录,但是需要提醒的是,历史记录会消耗较多的系统资源,常态请保持历史记录为关闭状态。
其次,只有在满足任务的所有条件时,任务才会运行。可以在“任务属性”对话框的“条件”选项卡中设置任务的条件。
某些任务只有当特定用户登录时才会运行,具体取决于任务的安全选项。如果计划的任务在预期运行时没有运行,请确保该任务的安全选项设置正确。
任务已运行,但应执行的程序未正确运行
如果任务试图执行某个程序,但该程序未正确运行,请首先尝试手动运行该程序(而不是通过任务),以确保该程序正确运行。可能需要向该程序的路径添加命令行选项。
某些程序需要提升权限才能正确运行。如果任务正在运行的程序需要提升权限,请确保该任务以最高权限运行。通过在“任务属性”对话框的“常规”选项卡中更改任务的安全选项,可以将该任务设置为以最高权限运行。
最后,在操作中配置的程序运行时,也有可能因为有其它程序的运行,或者不同程序实例的运行导致”没有运行“的假象,这个时候需要让程序本身输出日志进行协同检查。
某项任务占用了 100% 的 CPU
可能是某项任务的触发计划过于频繁,使其占用了 100% 的 CPU。如果出现此问题,系统可能会无法使用。若要纠正此问题,应该禁用该任务,并更改该任务的触发器。
如果由于任务占用了所有系统资源而使系统无响应,请执行下列步骤:
在安全模式下重新启动计算机(任务计划程序服务无法在安全模式下运行)。在 /Windows/System32/Tasks 文件夹中,重命名该任务的文件,或删除文件。在正常模式下重新启动系统,然后重新定义该任务。
参考文献
任务计划的操作帮助虽然找不到了,但是微软官网上还能找到相关的资料,可以辅助阅读。
Task Scheduler英文版说明
内容相近,只是英文的,没有中文翻译。
https://learn.microsoft.com/zh-cn/dynamics365/business-central/dev-itpro/developer/devenv-task-scheduler
TaskSettings 对象
将的是同一个工具,只是写给程序员的,但上述涉及到的设置的含义是一致的,如果有不一致的地方,请以官网的说明为准:
https://learn.microsoft.com/zh-cn/windows/win32/taskschd/tasksettings