Мы (наша компания) выполняем несколько запланированных задач на сервере.Недавно некоторые из задач начали сбой при запуске.Мы хотели бы запросить все запланированные задания, сообщив о ком-либо, чей результат последнего запуска не равен 0x0, используя powershell.
Я пробовал много исследований, чтобы найти простой способ сделать это, но нашел только сценарии, которые могут запрашивать запланированную задачу по имени (только для проверки одной задачи), но не по результатам последнего запуска.Не было бы полезно добавлять новую кодовую строку для каждой вновь назначенной запланированной задачи.
В этом разделе есть довольно похожая запись, но, как описано выше, с именем задачи в качестве параметра.( Как отправить электронное письмо, если не удается запустить заданное задание SPECIFIC )
$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"