用于使用任务计划程序的界面

时间:2015-08-26 07:18:21

标签: scheduled-tasks jscript wsh

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

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

我已经使用Task Scheduler 2.0 Interfaces

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

我能以某种方式使用JScript中的那些接口吗?

1 个答案:

答案 0 :(得分:1)

不,您不能使用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等值。

幸运的是,对于所有这些事情,有很多可用的例子(在这个网站和其他地方)可以帮助你入门。