如何用Python获取Windows任务计划程序中任务的上次运行时间
获取Windows任务计划任务的上次运行时间(DateTime/Unix时间戳)
我之前也踩过schtasks命令输出格式不统一的坑,给你几个更可靠的解决方案:
最优解:用PowerShell直接获取DateTime对象
PowerShell的任务计划模块能直接返回强类型的DateTime值,完全不用纠结字符串格式问题,这是最省心的方式:
# 替换成你的目标任务名称 $targetTask = "TASK_NAME" # 获取任务的运行详情 $taskInfo = Get-ScheduledTask -TaskName $targetTask | Get-ScheduledTaskInfo # LastRunTime本身就是DateTime类型,可直接用于日期运算、自定义格式化等操作 $lastRunDateTime = $taskInfo.LastRunTime Write-Host "上次运行时间(DateTime):$lastRunDateTime" # 转换为Unix时间戳(秒级) $unixTimestamp = [Math]::Floor((Get-Date $lastRunDateTime -UFormat %s)) Write-Host "上次运行时间(Unix时间戳):$unixTimestamp"
兼容schtasks命令的处理方案
如果因为环境限制必须依赖schtasks命令的输出,可以用PowerShell帮你解析并自动转换格式——它对Windows常见的日期格式兼容性很强:
$taskName = "TASK_NAME" # 从schtasks输出中提取上次运行时间字符串 $lastRunStr = (schtasks /QUERY /FO LIST /V /TN $taskName | Select-String "Last Run Time").Line -replace "Last Run Time:\s+", "" # 直接转换为DateTime类型 $lastRunDateTime = [DateTime]$lastRunStr # 转Unix时间戳 $unixTimestamp = [Math]::Floor((Get-Date $lastRunDateTime -UFormat %s))
备选:用WMI/CIM查询
也可以通过WMI接口获取任务信息,返回的LastRunTime同样是标准DateTime类型:
$taskName = "TASK_NAME" $task = Get-CimInstance -ClassName Win32_ScheduledTask | Where-Object {$_.Name -eq $taskName} $lastRunDateTime = $task.LastRunTime
小提示
如果你的任务在嵌套文件夹里(比如\BackupTasks\DailyBackup),需要把任务名称参数换成完整路径,或者结合-TaskPath指定文件夹路径。
内容的提问来源于stack exchange,提问作者rinat dior
相关产品推荐
相关产品推荐

