【发布时间】:2019-09-21 17:26:15
【问题描述】:
我们(我们的公司)正在服务器上运行多个计划任务。最近一些任务开始运行失败。我们想使用 powershell 查询所有报告上次运行结果不是 0x0 的任何人的计划作业。
我已经尝试了很多研究以找到一种简单的方法,但只找到了可以按名称查询计划任务(仅检查一个任务)但不能按上次运行结果查询的脚本。为每个新安装的计划任务添加新代码行不会有帮助。
关于该主题有一个非常相似的条目,但如上所述,任务名称作为参数。 (How to send email when SPECIFIC scheduled task fails to run)
$ScheduledTaskName = "Taskname"
$Result = (schtasks /query /FO LIST /V /TN $ScheduledTaskName | findstr "Result")
$Result = $Result.substring(12)
$Code = $Result.trim()
If ($Code -gt 0) {
$User = "admin@company.com"
$Pass = ConvertTo-SecureString -String "myPassword" -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential $User, $Pass
$From = "Alert Scheduled Task <task@servername>"
$To = "Admin <admin@company.com>"
$Subject = "Scheduled task 'Taskname' failed on SRV-001"
$Body = "Error code: $Code"
$SMTPServer = "smtp.company.com"
$SMTPPort = "25"
Send-MailMessage -From $From -to $To -Subject $Subject `
-Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
-Credential $Cred
}
我猜代码应该是这样的
Get-ScheduledTask | where LastTaskResult -NE "0x0"
【问题讨论】:
标签: powershell scheduled-tasks