有谁知道我可以看到的方法或资源,以便能够检查我在任务调度程序中的所有Windows任务的状态?我想看看是否有任务失败或成功.我想用Python做到这一点.我看了一下使用win32com.client模块.我可以看到什么是任务,但无法...

有谁知道我可以看到的方法或资源,以便能够检查我在任务调度程序中的所有Windows任务的状态?我想看看是否有任务失败或成功.我想用Python做到这一点.
我看了一下使用win32com.client模块.我可以看到什么是任务,但无法找到已完成工作的状态.
import win32com.client
scheduler = win32com.client.Dispatch("Schedule.Service")
scheduler.Connect()
tasks = scheduler.GetRunningTasks(1)
names = [tasks.Item(i+1).Name for i in range(tasks.Count)]
print names
解决方法:
以下使用Task Scheduler API打印所有已注册任务的基本信息,包括上次运行时间和结果.
import win32com.client
TASK_ENUM_HIDDEN = 1
TASK_STATE = {0: 'Unknown',
1: 'Disabled',
2: 'Queued',
3: 'Ready',
4: 'Running'}
scheduler = win32com.client.Dispatch('Schedule.Service')
scheduler.Connect()
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:
settings = task.Definition.Settings
print('Path : %s' % task.Path)
print('Hidden : %s' % settings.Hidden)
print('State : %s' % TASK_STATE[task.State])
print('Last Run : %s' % task.LastRunTime)
print('Last Result: %s\n' % task.LastTaskResult)
print('Listed %d tasks.' % n)
这仅从列表中的根文件夹开始.每次通过循环弹出一个文件夹;推送所有子文件夹;并列出文件夹中的任务.它一直持续到文件夹列表为空.
COM接口
> ITaskService
> ITaskFolder
> IRegisteredTask
> ITaskDefinition
> ITaskSettings
或者,这是一个walk_tasks生成器,它是在标准库的os.walk上建模的.
import os
import pywintypes
import win32com.client
TASK_ENUM_HIDDEN = 1
TASK_STATE = {
0: 'Unknown',
1: 'Disabled',
2: 'Queued',
3: 'Ready',
4: 'Running'
}
def walk_tasks(top, topdown=True, one rror=None, include_hidden=True,
serverName=None, user=None, domain=None, password=None):
scheduler = win32com.client.Dispatch('Schedule.Service')
scheduler.Connect(serverName, user, domain, password)
if isinstance(top, bytes):
if hasattr(os, 'fsdecode'):
top = os.fsdecode(top)
else:
top = top.decode('mbcs')
if u'/' in top:
top = top.replace(u'/', u'\\')
include_hidden = TASK_ENUM_HIDDEN if include_hidden else 0
try:
top = scheduler.GetFolder(top)
except pywintypes.com_error:
if one rror is not None:
one rror(error)
return
for entry in _walk_tasks_internal(top, topdown, one rror, include_hidden):
yield entry
def _walk_tasks_internal(top, topdown, one rror, flags):
try:
folders = list(top.GetFolders(0))
tasks = list(top.GetTasks(flags))
except pywintypes.com_error as error:
if one rror is not None:
one rror(error)
return
if not topdown:
for d in folders:
for entry in _walk_tasks_internal(d, topdown, one rror, flags):
yield entry
yield top, folders, tasks
if topdown:
for d in folders:
for entry in _walk_tasks_internal(d, topdown, one rror, flags):
yield entry
例
if __name__ == '__main__':
n = 0
for folder, subfolders, tasks in walk_tasks('/'):
n += len(tasks)
for task in tasks:
settings = task.Definition.Settings
print('Path : %s' % task.Path)
print('Hidden : %s' % settings.Hidden)
print('State : %s' % TASK_STATE[task.State])
print('Last Run : %s' % task.LastRunTime)
print('Last Result: %s\n' % task.LastTaskResult)
print('Listed %d tasks.' % n)
本文标题为:Python检查已完成和失败的任务Windows调度程序


基础教程推荐
- windows下python虚拟环境virtualenv安装和使用 2023-09-05
- python-将屏幕快照加载到内存中以进行简历模板匹配的最快方法 2023-11-15
- Python sklearn库三种常用编码格式实例 2022-10-20
- python子进程终端mac osx 2023-11-14
- Linux下安装Python,以及环境变量的配置 2023-09-04
- python多进程、多线程 2023-11-11
- python_day26__socke网络编程之subprocess方法_产生在DOS环境下执行的子进程以执行DOS命令符 2023-09-03
- Python 制作子弹图 2023-08-08
- windows下使用pycharm配置python的virtualenv环境 2023-09-04
- 详解LyScript 内存扫描与查壳实现 2022-10-20