Мы пытаемся запросить все запланированные задачи с помощью Python.
Проверьте продолжительность выполнения - и если запланированное задание выполняется дольше 5 часов, сценарий должен отправить письмо через распространителя электронной почты.
Мы уже написали функцию, которая будет отправлять почту, если вызывается функция «SendMail».
В следующем фрагменте мы заменили функцию «SendMail» на Print-Statement, чтобы сосредоточиться на нашей проблеме.
Есть ли возможность запросить продолжительность выполнения запланированного задания?
Планировщик заданий может отображать через «Показать все выполняемые задачи» окно, в котором отображается продолжительность выполнения.
Ссылка на изображение продолжительности прогона, мы пытаемся запросить
import win32com.client
def check_tasks():
start = 1
MonTask = ["all"]
if start == 1:
TASK_ENUM_HIDDEN = 1
TASK_STATE = {0: 'Unknown',
1: 'Disabled',
2: 'Queued',
3: 'Ready',
4: 'Running'}
scheduler = win32com.client.Dispatch('Schedule.Service')
scheduler.Connect()
longtasklist = []
LastRun = 0
n = 0
folders = [scheduler.GetFolder('\\')]
while folders:
folder = folders.pop(0)
folders += list(folder.GetFolders(0))
tasks = list(folder.GetTasks(TASK_ENUM_HIDDEN))
n += len(tasks)
for task in tasks:
if (task.name in MonTask) or (MonTask[0] == "all"):
settings = task.Definition.Settings
taskname = task.name
taskstate = TASK_STATE[task.State]
if taskstate == "Running":
#################################
#if Task Run Duration > 05:00:00#
#################################
longtasklist.append(taskname)
if len(longtasklist) > 0:
print(longtasklist) #only for checking in the console
MailText = "The Task/s \" %s \" exceeded the time limit" % longtasklist
print("Send_Mail")
#Send_Mail(MailText)
check_tasks()