使用任务计划程序的界面

Interface to work with the Task Scheduler

我正在开发一个简单的 JScript 脚本,由 Windows Script Host 编写 运行。

此脚本需要从任务计划程序中读取一些数据。我不知道如何开始。

我已经使用 Task Scheduler 2.0 Interfaces

在 C++ 中实现了类似的功能

我可以在 JScript 中以某种方式使用这些接口吗?

不,您不能从 JScript 使用 Task Scheduler 2.0 界面。

但是,您可以读取任务计划程序创建的 XML 文件。它们包含所有已定义任务的所有属性。

它们位于 %windir%\system32\tasks(您需要管理员权限才能阅读此目录及其内容)。

下面是这样一个文件的例子,非常简单XML:

<Task version="1.1" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Author>SYSTEM</Author>
    <Description>Some text here...</Description>
  </RegistrationInfo>
  <Triggers>
    <LogonTrigger>
      <Enabled>true</Enabled>
    </LogonTrigger>
    <CalendarTrigger>
      <Enabled>true</Enabled>
      <StartBoundary>2015-07-16T05:32:00</StartBoundary>
      <ScheduleByDay>
        <DaysInterval>1</DaysInterval>
      </ScheduleByDay>
    </CalendarTrigger>
  </Triggers>
  <Settings>
    <Enabled>true</Enabled>
    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
    <Hidden>false</Hidden>
    <WakeToRun>false</WakeToRun>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <Priority>5</Priority>
    <IdleSettings>
      <Duration>PT600S</Duration>
      <WaitTimeout>PT3600S</WaitTimeout>
      <StopOnIdleEnd>false</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
  </Settings>
  <Principals>
    <Principal id="Author">
      <UserId>System</UserId>
      <RunLevel>HighestAvailable</RunLevel>
      <LogonType>InteractiveTokenOrPassword</LogonType>
    </Principal>
  </Principals>
  <Actions Context="Author">
    <Exec>
      <Command>C:\path\to\executable.exe</Command>
      <Arguments>/args</Arguments>
    </Exec>
  </Actions>
</Task>

需要查明的事项列表:

  • 如何 运行 具有更高权限的脚本。
  • 如何使用 FileSystemObject 导航目录结构。
  • 如何使用 MSXML2 COM 对象打开 XML 文件
  • 如何使用 XPath 导航那些 XML 文档。
  • 如何处理默认的 XML 命名空间(这比听起来更重要 - 在正确完成此部分之前,您不会从 XPath 获得任何结果)。
  • 如果您的任务需要,请了解 ISO 8601 时间段符号的工作原理,以便您可以解码 PT600S.
  • 等值

幸运的是,对于所有这些事情,有许多示例(在本网站和其他地方)可以帮助您入门。