我需要使用 python 检查 Windows 计划任务的状态,并通过任务名称进行验证。我基本上想知道任务是否正在运行。
我已经寻找答案但没有找到任何答案。
我怎样才能做到这一点?
编辑: 根据以下评论,实现此目的并将结果放在某种变量中(例如,检查状态是否为“运行”)的最佳方法是:
"Running" in check_output(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", '-Command', '&{Get-ScheduledTask -TaskPath \* | where taskname -eq "TaskName" | select state;}'])
答案1
您可以使用子进程模块。
import subprocess
subprocess.call(r'schtasks.exe /query /tn "TASKNAME_HERE"', shell=True)
如果访问被拒绝,可能需要更改字符串以传递服务器地址和凭据,如下所示:
import subprocess
subprocess.call(r'schtasks.exe /query /S 192.168.1.100 /u domain\username /P pass /tn "TASKNAME_HERE"', shell=True)
如下所述,要获取命令的“状态”,使用 powershell 很容易。试试这个:
import subprocess
subprocess.call(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", '-Command', '&{Get-ScheduledTask -TaskPath \* | where taskname -eq "Ajustar Inventario SM" | select state;}'])
这将返回:
State
-----
Ready