Làm cho Trình lập lịch tác vụ Windows cảnh báo tôi về thất bại


65

Tôi có một tập lệnh tự động kéo các bản sao lưu từ trang web của tôi vào máy tính cục bộ của tôi. Kịch bản này có thể thất bại; một khi máy chủ của tôi bị sập, một lần khác tôi vô tình di chuyển tập lệnh của mình.

Làm cách nào để làm cho Trình lập lịch tác vụ Windows cho tôi biết tập lệnh bị lỗi (hoặc không chạy / không tìm thấy)?

Tôi không quan tâm nếu một lời nhắc đến, một email hoặc một cái gì đó xuất hiện trên máy tính để bàn của tôi. Tôi muốn được thông báo nếu có sự cố. Trên máy chủ của tôi, crontab gửi email cho tôi về các lỗi - điều này thật tuyệt. Tôi muốn một cái gì đó như thế trên máy tính windows 7 của tôi.


đã tìm thấy ID sự kiện của trình lập lịch tác vụ ít nhất là mnaoumov.wordpress.com/2014/05/15/task-scheduler-event-ids

Câu trả lời:


87

Khi một tác vụ theo lịch trình không bắt đầu, một sự kiện được ghi vào nhật ký sự kiện của TaskScheduler :

Lưu ý: Nhật ký Trình lập lịch tác vụ được đặt tại (bên dưới Công cụ quản trị)

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

nhập mô tả hình ảnh ở đây

Windows cho phép bạn kích hoạt các tác vụ theo lịch trình để bắt đầu khi có nhiều sự kiện xảy ra, ví dụ:

  • thời gian trong ngày
  • khởi động hệ thống
  • đăng nhập người dùng
  • sự kiện được ghi lại trong nhật ký sự kiện

Được trang bị kiến ​​thức này, bạn có thể tạo một tác vụ theo lịch trình chạy khi tác vụ theo lịch trình của bạn không thành công:

nhập mô tả hình ảnh ở đây

Hành động của tác vụ theo lịch trình này sau đó có thể được đặt thành thứ gì đó gửi cảnh báo cho bạn - theo lựa chọn phương thức của bạn (ví dụ: kích hoạt tắt máy). Bạn có thể chỉ muốn nó gửi e-mail:

nhập mô tả hình ảnh ở đây

Đây là cách Windows xử lý mọi thứ. Bạn có thể thấy nhiều tác vụ chẩn đoán kích hoạt một sự kiện xuất hiện trong nhật ký. ví dụ: khi phát hiện xung đột địa chỉ IP, một sự kiện được ghi vào nhật ký:

  • Nhật ký: Hệ thống
  • Nguồn: Tcpip
  • ID sự kiện: 4198

Một tác vụ theo lịch trình kích hoạt sự kiện này và chạy một chương trình để cho bạn biết về nó và khắc phục nó. Hãy nhớ rằng id sự kiện không chỉ dành riêng cho một tác vụ. Bất kỳ tác vụ nào tạo ra sự kiện 203 - Hành động không bắt đầu, sẽ kích hoạt tác vụ này.


2
Bạn nhận được id sự kiện từ nhật ký sự kiện (203 và 103). Bạn có thể thấy id của sự kiện trong ảnh chụp màn hình (203 và 103). Hoặc tôi có thể cho bạn biết id của sự kiện: 203 và 103.
Ian Boyd

5
Bạn sẽ làm gì nếu nhiệm vụ thứ hai thất bại!?!?
William Jackson

3
@WilliamJackson Tạo một sự kiện tắt máy. Ai đó chắc chắn sẽ được cảnh báo về một vấn đề sau đó.
Ian Boyd

11
Trên thực tế, nếu nhiệm vụ thứ 2 thất bại, nó sẽ khởi chạy nhiệm vụ thứ 2 sẽ thất bại, nó sẽ khởi động nhiệm vụ thứ 2 sẽ thất bại, nó sẽ khởi động nhiệm vụ thứ 2 sẽ ... bạn hiểu ý. Tôi chỉ phát hiện ra điều này một cách khó khăn = /
Rob Penridge

6
Điều này không cảnh báo bạn nếu một nhiệm vụ thất bại , chỉ khi nó không bắt đầu . Không giỏi làm những điều tương tự.
jwg

11

Đây là kịch bản của tôi để cảnh báo tôi khi công việc sao lưu của tôi có giá trị lớn hơn 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
}

Đây là một tùy chọn tốt vì câu trả lời được chọn hiện tại sử dụng tính năng Windows không dùng nữa.
John Hargrove

Xin lưu ý rằng đây là giải pháp được tạo riêng cho người dùng Windows bằng ngôn ngữ tiếng Anh. Đối số cho ọfindstr, phải được thay đổi theo ngôn ngữ của người dùng được thiết lập trong Windows.
Eda190

7

Hãy xem PushMon . Bạn có thể tạo URL PushMon sẽ được gọi ở cuối tập lệnh của bạn. Nếu tập lệnh của bạn không chạy vì máy chủ không hoạt động hoặc tập lệnh bị di chuyển, bạn sẽ được thông báo. Bạn có thể nhận được thông báo qua email, SMS, cuộc gọi điện thoại, IM và Twitter. Điều này sẽ làm việc cho bất kỳ hệ điều hành. Điều này giống như Pingdom nhưng đối với các kịch bản và tác vụ nền.


1
Nếu bạn thêm nó vào cuối tập lệnh của mình và tập lệnh bị thiếu (ví dụ: đã được di chuyển), làm thế nào để có tên được gọi là
Bob

3
Vì tập lệnh được di chuyển và URL không được gọi, nên bạn sẽ nhận được cảnh báo.
Bienvenido David

1
Cố gắng truy cập trang web của họ; trớ trêu thay, nó dường như ngừng hoạt động ..
Isaac Kleinman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.