Windows 작업 스케줄러가 실패시 경고하도록 설정


65

웹 사이트에서 로컬 컴퓨터로 백업을 가져 오는 자동 스크립트가 있습니다. 이 스크립트는 실패 할 수 있습니다. 서버가 다운되면 실수로 스크립트를 옮겼습니다.

Windows 작업 스케줄러에서 스크립트 실패 (또는 실행 / 찾을 수 없음)를 알려주는 방법은 무엇입니까?

프롬프트, 이메일 또는 데스크탑에 나타나는 메시지가 표시되는지는 상관 없습니다. 문제가 발생하면 알림을 받고 싶습니다. 내 서버에서 crontab은 오류에 대해 이메일을 보냅니다. 내 Windows 7 로컬 컴퓨터에서 그런 것을 원합니다.


작업 스케줄러 이벤트 적어도 ID를 발견 mnaoumov.wordpress.com/2014/05/15/task-scheduler-event-ids

답변:


87

예약 된 작업이 시작되지 않으면 이벤트가 TaskScheduler 이벤트 로그에 기록됩니다.

참고 : 작업 스케줄러 로그는 관리 도구 아래에 있습니다.

 Computer Management
    System Tools
       Event Viewer
          Application and Services Logs
             Microsoft
                Windows
                   Task Scheduler
                      Operational

여기에 이미지 설명을 입력하십시오

Windows에서는 다음과 같은 다양한 이벤트가 발생할 때 예약 된 작업이 시작되도록 트리거 할 수 있습니다 .

  • 시간
  • 시스템 시작
  • 사용자 로그인
  • 이벤트 로그에 기록 된 이벤트

이 지식으로 무장 한 경우 예약 된 작업이 실패 할 때 실행되는 예약 된 작업을 만들 수 있습니다.

여기에 이미지 설명을 입력하십시오

이 예약 된 작업의 작업 은 선택한 방법 (예 : 종료 트리거)에서 경고를 보내는 것으로 설정할 수 있습니다. 전자 우편을 보내려고 할 수도 있습니다.

여기에 이미지 설명을 입력하십시오

이것이 Windows가 모든 것을 처리하는 방법입니다. 로그에 나타나는 이벤트에서 트리거되는 많은 진단 작업을 볼 수 있습니다. 예를 들어 IP 주소 충돌이 감지되면 이벤트가 로그에 기록됩니다.

  • 로그 : 시스템
  • 출처 : Tcpip
  • 이벤트 ID : 4198

예약 된 작업이이 이벤트에 대해 트리거되고 프로그램을 실행하여 이벤트를 알려주고 수정합니다. 이벤트 ID는 하나의 작업에만 국한되지 않습니다. 이벤트 203-작업을 시작하지 못한 모든 작업이이 작업을 트리거합니다.


2
이벤트 로그 (203 및 103)에서 이벤트 ID 를 얻습니다 . 스크린 샷에서 이벤트 ID를 볼 수 있습니다 (203 및 103). 아니면 내가 당신에게 이벤트 ID의 말할 수 : 203 (103)
이안 보이드에게

5
두 번째 작업이 실패하면 어떻게해야합니까!?!?
William Jackson

3
@WilliamJackson 컴퓨터를 종료하는 이벤트를 만듭니다. 그러면 누군가 문제에 대해 경고를받을 것입니다.
Ian Boyd

11
실제로 두 번째 작업이 실패하면 두 번째 작업이 시작되고 실패하는 두 번째 작업이 시작되고 두 번째 작업이 실패하면 두 번째 작업이 시작됩니다. 방금 이것을 어려운 방법으로 발견했습니다 = /
Rob Penridge

6
작업이 경우에 사용자에게 경고하지 않습니다 실패 가 경우에만 시작할 수 없습니다 . 똑같은 것은 아닙니다.
jwg

11

백업 작업의 값이 0보다 클 때 알려주는 스크립트는 다음과 같습니다.

$ScheduledTaskName = "Hans\Backup"
$Result = (schtasks /query /FO LIST /V /TN $ScheduledTaskName  | findstr "Result")
$Result = $Result.substring(12)
$Code = $Result.trim()

If ($Code -gt 0) {
    $User = "mymail@gmail.com"
    $Pass = ConvertTo-SecureString -String "myPassword" -AsPlainText -Force
    $Cred = New-Object System.Management.Automation.PSCredential $User, $Pass
################################################################################

$From = "Alert Scheduled Task <mymail@gmail.com>"
$To = "Me Gmail <mymail@gmail.com>"
$Subject = "Scheduled task 'Backup' failed"
$Body = "Error code: $Code"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"

Send-MailMessage -From $From -to $To -Subject $Subject `
-Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
-Credential $Cred
}

현재 선택된 답변이 더 이상 사용되지 않는 Windows 기능을 사용하므로이 옵션이 좋습니다.
John Hargrove

이 기능은 영어를 사용하는 Windows 사용자를 위해 특별히 제작 된 솔루션입니다. "findstr"에 대한 인수는 Windows에 설정된 사용자의 언어에 따라 변경해야합니다.
Eda190

7

PushMon을 살펴 보십시오 . 스크립트 끝에서 호출되는 PushMon URL을 작성할 수 있습니다. 서버가 다운되었거나 스크립트가 이동하여 스크립트가 실행되지 않으면 알림을받습니다. 당신은 이메일, SMS, 전화, 메신저 및 트위터로 알림을받을 수 있습니다. 이것은 모든 운영 체제에서 작동합니다. 이것은 Pingdom과 비슷하지만 스크립트 및 백그라운드 작업에 사용됩니다.


1
스크립트 끝에 스크립트를 추가하고 스크립트가 누락 된 경우 (예 : 이동)‽
Bob

3
스크립트가 이동하고 URL이 호출되지 않았으므로 경고가 표시됩니다.
Bienvenido David

1
그들의 사이트를 방문하려고; 아이러니하게도, 아래 것 같다 ..
이삭 Kleinman은
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.