Список запланированных задач Windows с помощью Python

Я пытаюсь перечислить все запланированные задачи в Windows с помощью скрипта Python.

В этом посте проверка Python на наличие завершенных и неудачных планировщиков задач Windows есть какой-то код, который работал.

import win32com.client

TASK_STATE = {0: 'Unknown',
              1: 'Disabled',
              2: 'Queued',
              3: 'Ready',
              4: 'Running'}

scheduler = win32com.client.Dispatch('Schedule.Service')
scheduler.Connect()

folders = [scheduler.GetFolder('\\')]
while folders:
    folder = folders.pop(0)
    folders += list(folder.GetFolders(0))
    for task in folder.GetTasks(0):
        print('Path       : %s' % task.Path)
        print('State      : %s' % TASK_STATE[task.State])
        print('Last Run   : %s' % task.LastRunTime)
        print('Last Result: %s\n' % task.LastTaskResult)

Однако я хотел бы отобразить путь к файлу, который он выполняет (например, c:\test\aaa.bat), и параметры команды. Как это можно сделать?

А может кто-нибудь объяснить смысл некоторых команд в коде:

  1. [] в коде [scheduler.GetFolder('\')]
  2. Где я могу получить подробное объяснение кода, такого как list(folder.GetFolders(0)), folder.GetTasks(0)? Есть ли доступная документация?

person user1748640    schedule 04.09.2017    source источник
comment
Воспользуйтесь предоставленными ссылками. Dispatch возвращает экземпляр ITaskService. GetFolder('\\') возвращает ITaskFolder для корневой папки в пространстве имен планировщика. GetFolders(0) возвращает подпапки в файле ITaskFolderCollection. GetTasks(0) получает нескрытые задачи в папке в файле IRegisteredTaskCollection. Чтобы включить скрытые задачи, используйте GetTasks(TASK_ENUM_HIDDEN), т.е. GetTasks(1). Перечисление возвращает задачу как IRegisteredTask. Обратите внимание, что его свойство Definition — это ITaskDefinition.   -  person Eryk Sun    schedule 04.09.2017
comment
@eryksun Спасибо! Я заметил, что вы также являетесь автором кода ссылки, это действительно помогает! '[]' обычно используется для списка, в чем здесь цель?   -  person user1748640    schedule 05.09.2017
comment
Ничего особенного. Это просто обход дерева задач с использованием списка и цикла. Он начинается с корневой папки в списке. Цикл открывает папку; выталкивает все свои подпапки; и перечисляет задачи в папке. Это продолжается до тех пор, пока список не станет пустым. Его можно обобщить в функцию генератора стиля os.walk, которая выдает путь, подпапки и задачи в каждой папке.   -  person Eryk Sun    schedule 05.09.2017
comment
Я добавил функцию генератора walk_tasks в свой ответ на связанный вопрос.   -  person Eryk Sun    schedule 17.09.2017