Начало статьи см. здесь

Principals

Элемент Principals позволяет вам задать учетную запись пользователя и уровень привилегий, предназначенные для использования создаваемого задания. Вместе с этим элементом вы можете использовать следующие четыре дочерних элемента:

DisplayName. Текущий элемент определяет учетную запись пользователя, которая отображается в поле «Автор» свойств вашего задания. Пример использования:

<DisplayName>%имя_автора%</DisplayName>;

GroupId. Указав этот элемент, вы определите, что для выполнения задания будет использоваться указанная вами группа. Нужно обратить внимание на то, что должен быть указан именно идентификатор группы, например:

<GroupId>S-1-5-21-3771734316-826113672-800548835-1000</GroupId>;

LogonType. Данный элемент определяет способ безопасности входа в систему, который необходим для запуска задачи и всех связанных с ней задач. Этот элемент необходимо указывать только в том случае, если вы используете элемент UserId. Пример использования:

<LogonType>InteractiveToken</LogonType>;

UserId. Указав соответствующий элемент, вы определите, что для выполнения задания будет использоваться указанная вами учетная запись пользователя. Стоит обратить внимание на то, что вы не можете одновременно использовать учетную запись пользователя и идентификатор группы. Пример использования:

<UserId>VIRTDIMANSTrustedUser</UserId>;

RunLevel. Этот элемент обычно используется только в том случае, если вам нужно настроить запуск создаваемого задания с наивысшими правами, которые могут быть у пользователя, указанного в элементе UserId. У этого элемента может быть только одно значение и его синтаксис будет следующий:

<RunLevel>HighestAvailable</RunLevel>.

Пример использования элемента Principals:

<Principals>
    <Principal id="Author">
      <UserId>VIRTDIMANSTrustedUser</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>

Settings

Все дополнительные настройки для вашего задания, которые вы можете указать при помощи утилиты командной строки SchTasks или на вкладках «Условия» и «Параметры» в диалоговом окне свойств задания, в конфигурационном XML-файле определяются внутри элемента Settings. Для этого элемента вы можете добавить до шестнадцати дочерних элементов, позволяющие вам указать все настройки, которые вам понадобятся во время выполнения задания. Вы можете добавить следующие элементы:

AllowHardTerminate. Этот элемент отвечает за то, может ли пользователь остановить выполнения задачи при помощи опции «Завершить процесс» из диалогового окна «Диспетчер задач». Данный элемент эквивалентен опции «Принудительная остановка задачи, если она не прекращается по запросу» на вкладке «Параметры» диалогового окна свойств задания. Доступные значения – true и false, что, соответственно определяет, активна ли данная опция. Синтаксис этого элемента следующий:

<AllowHardTerminate>true</AllowHardTerminate>;

sched5-01 
Рис. 1. Опция вкладки «Параметры», которая эквивалентна элементу AllowHardTerminate XML-файла

AllowStartOnDemand. Указав этот параметр, вы определяете, может ли задача запускаться при помощи диалогового окна «Выполнить» или контекстного меню. В диалоговом окне свойств задания, этот элемент определяется опцией «Разрешать выполнение задачи по требованию» на вкладке «Параметры». Также как и в предыдущем элементе, для этого параметра доступны значения true и false. Пример использования:

<AllowStartOnDemand>true</AllowStartOnDemand>;

DeleteExpiredTaskAfter. Указав данный элемент, вы можете определить период времени, который будет ожидать планировщик заданий до удаления этого задания. Если элемент не будет указан, то задание останется висеть в библиотеке планировщика. Эквивалентным параметром графического интерфейса является опция «Если повтор задачи не запланирован, удалять через:», а также раскрывающееся меню с временным интервалом на вкладке «Параметры». Формат этого элемента – PnD, где значение nD, это количество дней, которые должны пройти до удаления задания в том случае, если не будет его повторов. Синтаксис этого элемента:

<DeleteExpiredTaskAfter>P90D</DeleteExpiredTaskAfter>;

DisallowStartIfOnBatteries. Используя этот элемент, вы можете указать, должно ли запускаться задание в том случае, если ваш ноутбук работает от батарей. В диалоговом окне свойств задания оснастки «Планировщик заданий» за этот элемент отвечает опция «Запускать только при питании от электросети», которая находится на вкладке «Условия». Для этого элемента вы можете указать одно из двух значений – true и false, которые, соответственно, отвечают за истинное или ложное значение для данного элемента. Пример использования элемента:

<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>;

StopIfGoingOnBatteries. Этот элемент вы можете указывать только в том случае, если для элемента DisallowStartIfOnBatteries установлено значение true. Данный элемент отвечает за остановку выполнения задания в том случае, если ваш ноутбук переводится в режим работы от батарей. В графическом интерфейсе для активации данного элемента применяется опция «Останавливать при переходе на питание от батарей» на вкладке «Условия». Синтаксис следующий:

<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>;

ExecutionTimeLimit. При помощи этого элемента вы можете установить период времени, в течение которого задание может выполняться. Формат этого элемента – PnDTnH, где значение nD, это количество дней, по истечении которых ваше задание должно быть остановлено. Значения разделителя T позволяет вам указать время, в течение которого здание может выполняться, а значение nH позволяет вам указать количество часов, которые должны пройти до остановки вашего задания. За этот элемент отвечает опция «Останавливать задачу, выполняемую дольше:», а также раскрывающееся меню со временным интервалом на вкладке «Параметры» диалогового окна свойств задания. Пример использования этого элемента с интервалом четыре часа:

<ExecutionTimeLimit>PT4H</ExecutionTimeLimit>;

Hidden. Данный элемент позволяет скрыть создаваемую задачу от просмотра пользователями в графическом интерфейсе. В диалоговом окне свойств задания, за этот элемент отвечает опция «Скрытая задача», которая расположена на вкладке «Общие». Для этого элемента вы можете указать одно из двух значений – true и false. Для включения опции скрытого задания, в конфигурационный файл вам нужно внести следующие изменения:

<Hidden>true</Hidden>;

IdleSettings. В дополнение к триггерам вашего задания, вы можете указать дополнительные условия, позволяющие запускать создаваемую задачу при простое компьютера определенное время. За эти действия отвечают опции «Запускать задачу при простое компьютера», «Останавливать при выходе компьютера из простоя», «Перезапускать при возобновлении простоя», а также два раскрывающихся меню, которые доступны при активации первой опции на вкладке «Условия» диалогового окна свойств задания. В конфигурационном XML-файле для настроек всех этих опций для данного элемента вам необходимо указать следующие дочерние элементы:

  • Duration. Этот элемент отвечает за интервал времени, который компьютер будет простаивать до запуска задания. Формат элемента – PTnHnM, значение nH позволяет вам указать количество часов, которые компьютер может простаивать до запуска задания, а nM – количество минут. Синтаксис следующий:<Duration>PT15M</Duration>;
  • WaitTimeout. При помощи этого элемента вы можете указать время простоя системы. Формат этого элемента идентичен формату предыдущего. Пример использования:<WaitTimeout>PT1H</WaitTimeout>;
  • StopOnIdleEnd. Этот элемент отвечает за остановку выполнения задания при выходе компьютера из простоя. Для этого элемента вы можете указать одно из двух значений – true и false. Синтаксис использования данного элемента:<StopOnIdleEnd>true</StopOnIdleEnd>;
  • RestartOnIdle. Если вы хотите перезапустить задания при возобновлении простоя компьютера, то вам нужно указать значение true для этого элемента. Пример использования:<RestartOnIdle>true</RestartOnIdle>;

sched5-02 
Рис. 2. Опция вкладки «Условия», которая эквивалентна элементу IdleSettings XML-файла

Для того чтобы задать запуск задания при 15 минутном простое и ожидании простоя в один час с остановкой при выходе из простоя, внесите в конфигурационный файл следующие изменения:

<IdleSettings>
      <Duration>PT15M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
</IdleSettings>

MultipleInstancesPolicy. Вы можете установить одно из четырех правил для выполняющегося задания. Для просмотра возможных правил, вам нужно развернуть раскрывающееся меню «Если задача уже выполняется, то применять правило:» на вкладке «Параметры» диалогового окна свойств задания. В следующей таблице, вы увидите значения элемента MultipleInstancesPolicy для правил в конфигурационном файле:

Название правила Значение
Не запускать новый экземпляр IgnoreNew
Запускать новый экземпляр для задания Parallel
Ставить новый экземпляр задания в очередь Queue
Остановка текущего задания StopExisting

Таблица 1. Значения правил при выполнении задания

В этом примере используется правило, которое не позволяет запускать новый экземпляр задания при запущенной задаче:

<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>

Priority. Данный элемент позволяет вам указать уровень приоритета для создаваемого задания. Существует десять уровней приоритета, причем при уровне 0, у вашего задания будет установлен самый высокий приоритет, а при уровне 10 – самый низкий. Следует отметить, что уровни 7 и 8 предназначены для запуска задания в фоновом режиме, а уровни 4, 5 и 6 – для интерактивного пользовательского режима. По умолчанию установлен уровень 7. Пример использования данного элемента:

<Priority>7</Priority>;

RestartOnFailure. Этот элемент отвечает за количество попыток перезапуска задания, а также за интервал времени, который должен пройти до перезапуска задания в том случае, если при выполнении задание завершится с ошибкой. В диалоговом окне свойств задания оснастки «Планировщик заданий» за этот элемент и все его дочерние элементы отвечают опции «При сбое выполнять перезапуск через:», «Количество попыток перезапуска», а также раскрывающиеся меню, которые позволяют определить интервал времени и количество попыток перезапуска. За интервал времени, через который необходимо выполнять заново запуск задания отвечает дочерний элемент Interval. Формат этого элемента – PTnHnM, значение nH позволяет вам указать количество часов, которые должны пройти после сбоя задания, а nM – количество минут. За количество попыток перезапуска задания отвечает дочерний элемент Count, значением которого должно быть число. Пример использования:

<RestartOnFailure>
  <Interval>PT5M</Interval>
  <Count>3</Count>
</RestartOnFailure>

RunOnlyIfIdle. Данный элемент позволяет запускать задание в том случае, если компьютер простаивает определенное время. Для этого элемента вы можете указать одно из двух значений – true и false. Также при указании данного параметра вам нужно использовать параметр IdleSettings. Пример использования:

<RunOnlyIfIdle>false</RunOnlyIfIdle>;

RunOnlyIfNetworkAvailable. Используя данный элемент, вы можете разрешить запускать задание только в том случае, если на данный момент активно указанное вами подключение к сети. Для указания сетевого подключения используются следующие дочерние элементы, которые расположены в дополнительном элементе NetworkSettings:

  • Name. Этот элемент отвечает за название сетевого подключения, которое должно быть активно для выполнения вашего задания. Синтаксис следующий:<Name>Сеть</Name>;
  • Id. В этом обязательном параметре вам нужно указать идентификатор своего сетевого подключения. В данном случае, этот элемент будет выглядеть так:<Id>{0E1F4F29-B3EA-4B17-BAD9-65FF6973FF33}</Id>;

В диалоговом окне свойств создаваемого задания, за этот элемент отвечает опция «Запускать только при подключении к следующей сети», которую можно найти на вкладке «Условия». Если вы хотите, чтобы задание выполнялось при подключении к любой сети, дочерние элементы указывать не нужно, а достаточно просто, чтобы значением элемента RunOnlyIfNetworkAvailable было true. Пример использования этих двух элементов для сетевого подключения с названием «Сеть»:

<RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
  <NetworkSettings>
    <Name>Сеть</Name>
  <Id>{0E1F4F29-B3EA-4B17-BAD9-65FF6973FF33}</Id>
</NetworkSettings>

StartWhenAvailable. Вы можете указать этот элемент для того, чтобы задача была немедленно запущена в том случае, когда было пропущено плановый запуск. При помощи графического интерфейса вы можете активировать данную возможность в диалоговом окне свойств задания, на вкладке «Параметры» установив флажок на опции «Немедленно запускать задачу, если пропущен плановый запуск». Пример использования данного элемента следующий:

<StartWhenAvailable>true</StartWhenAvailable>;

WakeToRun. При помощи этого элемента вы можете разрешить пробуждать компьютер из спящего режима для выполнения созданного задания. За этот элемент отвечает опция «Пробуждать компьютер для выполнения задачи», расположенная на вкладке «Условия» диалогового окна свойств задания оснастки «Планировщик задач». Для этого элемента вы можете указать одно из двух значений – true и false, которые отвечают за истинное или ложное значение для данного параметра. Синтаксис следующий:

<WakeToRun>true</WakeToRun>;

Enabled. От этого параметра зависит, будет задание включено или отключено. При помощи графического интерфейса вы можете отключить задание из контекстного меню. Для этого элемента вы можете указать одно из двух значений – true и false. Пример использования этого элемента:

<Enabled>true</Enabled>;

В следующем листинге вы сможете ознакомиться с элементом Settings конфигурационного XML-файла задания:

<Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>true</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable>
    <NetworkSettings>
      <Name>Сеть</Name>
      <Id>{0E1F4F29-B3EA-4B17-BAD9-65FF6973FF33}</Id>
    </NetworkSettings>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>true</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>true</WakeToRun>
    <ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
    <DeleteExpiredTaskAfter>P90D</DeleteExpiredTaskAfter>
    <Priority>7</Priority>
    <RestartOnFailure>
      <Interval>PT5M</Interval>
      <Count>3</Count>
    </RestartOnFailure>
  </Settings>

Actions

Этот элемент конфигурационного XML-файла является одним из основных, так как именно при помощи него вы можете указать действия для создаваемого задания. Действия могут быть следующими: запуск программы, отправка электронной почты или вывод сообщения. При создании конфигурационного файла вы можете воспользоваться одним или несколькими следующими элементами:

sched5-03

Рис. 3. Варианты создания действия, которые вы можете создавать при помощи XML-файла

Exec. Данный элемент позволяет вам указать действие, которое будет выполняться из командной строки. Для этого элемента вы можете использовать следующие три дочерних элемента:

  • Command. При помощи текущего элемента можно указать программу или сценарий, который должен запуститься при выполнении вашего задания. Например, для запуска антивирусного программного обеспечения Microsoft Security Essentials, вам нужно в конфигурационный файл добавить следующую строку:<Command>c:Program FilesMicrosoft Security EssentialsMpCmdRun.exe</Command>;
  • Arguments. Этот элемент отвечает за аргументы, с которыми будет запущено ваше приложение из командной строки, например:<Arguments>Scan -ScheduleJob -WinTask -RestrictPrivilegesScan</Arguments>;
  • WorkingDirectory. Используя его, вы можете указать рабочую папку для командной строки, запускающей программу или сценарий. Пример использования:<WorkingDirectory>c:Program Files</WorkingDirectory>;

В следующем примере вы увидите использования данного элемента для запуска сканирования на вирусы по расписанию:

<Actions Context="LocalSystem">
    <Exec>
      <Command>"c:Program FilesMicrosoft Security EssentialsMpCmdRun.exe"</Command>
      <Arguments>Scan -ScheduleJob -WinTask -RestrictPrivilegesScan</Arguments>
      <WorkingDirectory>c:Program Files</WorkingDirectory>
    </Exec>
</Actions>

Для того чтобы добавить второе приложение в создаваемое задание, вам нужно после тега </Exec> открыть новый тег <Exec> с его дочерними параметрами.

SendEmail. Этот элемент вы можете использовать для отправки электронной почты. Все настройки можно указать при помощи следующих дочерних элементов:

  • From. Этот элемент предназначен для указания поля From. Пример использования:<From>bulanov.dmitry@testdomain.com</From>;
  • ReplyTo. Данный элемент определяет email адрес, который отвечает за поле Reply-To в письме. Пример использования:<ReplyTo>bulanov.dmitry@anotherdomain.com</ReplyTo>;To, Cc и Bcc. При помощи соответствующих элементов вы можете указать email-адреса в полях To, CC и BCC. Пример использования:

    <To>user@server.com</To>;

  • Subject. Используя текущий элемент, вы можете указать тему письма. Синтаксис следующий:<Subject>Some subject</Subject>;
  • Body. Этот элемент вам позволяет указать тело письма. Пример использования:<Body>Message</Body>;
  • HeaderFields. В элементе HeaderFields вы можете определить заголовок поля и их значения, используемые в заголовке электронной почты.
  • Attachments. Текущий элемент отвечает за физический путь к вложениям вашего письма. Для этого используется дочерний элемент File. Пример использования:
    <Attachments>
      <File>C:UsersVirtDImaNDocuments1.png</File>
    </Attachments>
  • Server. Данный элемент определяет адрес SMTP сервера для отправки письма. Пример использования применения элемента:<Server>192.168.1.20</Server>.

Ниже показан пример, определяющий отправку электронного письма:

<SendEmail>
      <Server>192.168.1.20</Server>
      <Subject>Some subject</Subject>
      <To>user@server.com</To>
      <From>bulanov.dmitry@testdomain.com</From>
      <Body>Message</Body>
      <HeaderFields />
      <Attachments>
        <File>C:UsersVirtDImaNDocuments1.png</File>
      </Attachments>
</SendEmail>

ShowMessage. Используя этот элемент, вы можете вывести текстовое сообщение. Для этого вы можете использовать два дочерних элемента:

  • Title. Текущий элемент позволяет указать заголовок для сообщения. Пример использования:<Title>Предупреждение</Title>;
  • Body. При помощи данного элемента вы можете задать текстовое сообщение. Пример использования этого элемента:<Body>Здесь отображается текст.</Body>.

Следующий пример демонстрирует задание, которое показывает предупреждение:

    <ShowMessage>
      <Title>Предупреждение</Title>
      <Body>Здесь отображается текст.</Body>
    </ShowMessage>

Заключение

В этой статье я рассказал о структуре заданий, которые вы периодически создаете — конфигурационных XML-файлов, в которых указываются абсолютно все настройки для создаваемого или существующего задания. В данной статье, разбитой на две части вы узнаете таких элементах, как: RegistrationInfo (административные сведения о времени создания задания, ее описание, информацию об авторе и прочее), Triggers (набор условий, при выполнении которых запускается задание), Settings (все дополнительные настройки для вашего задания, которые вы можете указать), а также об элементе Actions, который является одним из основных, так как именно при помощи него вы можете указать действия для создаваемого задания. В следующей статье вы узнаете об остальных контекстах утилиты SchTasks командной строки.

Реклама