Windows · PowerShell

Мониторинг планировщика заданий Windows

Узнайте, когда задача Windows не запустилась, завершилась с ошибкой или зависла. Обёртка PowerShell и уведомления в Telegram или email.

Free: 5 мониторов, Telegram и email.

Пример уведомления

● windows-nightly-export

Запланированное завершение не получено. Проверьте планировщик и учётную запись задачи.

Открыть монитор

Демонстрационные данные. Вид и состав сообщения зависят от канала и типа события.

Когда это нужно

Запуск вручную проходит, а ночью выгрузки нет: у планировщика другой пользователь, рабочая папка или права. Локальный журнал помогает разобрать ошибку, но сам по себе не сообщит о выключенном компьютере. Внешний монитор ждёт завершения по расписанию.

Как подключить

  1. 1

    Создайте cron-монитор с расписанием задачи, её часовым поясом и запасом на опоздание. Для ежедневных 03:00 подойдёт 0 3 * * *.

  2. 2

    Сохраните обёртку ниже в C:\Jobs\tickwatch-run.ps1. Укажите свой URL пинга и путь к рабочему скрипту. В действии планировщика запускайте обёртку через powershell.exe.

  3. 3

    Включите максимальную длительность монитора и уведомления. Проверьте успешный запуск, exit 7 в тестовом скрипте и пропуск запуска.

Готовый пример

Пример для Windows PowerShell 5.1 и HTTPS-доступа к Tickwatch. Рабочий скрипт должен возвращать ненулевой код при ошибке: скрытая внутри скрипта ошибка может оставить код 0. Задайте рабочую папку и права учётной записи в планировщике; ключ пинга храните приватно.

tickwatch-run.ps1
$ErrorActionPreference = 'Stop'
$ping = 'https://ping.tickwatch.dev/YOUR_PING_KEY'
$rid = [guid]::NewGuid().ToString()
function Send-Signal([string]$suffix) {
    try {
        $url = $ping + $suffix + "?rid=$rid"
        Invoke-WebRequest -Uri $url -Method Post -UseBasicParsing -TimeoutSec 5 -ErrorAction Stop | Out-Null
    } catch { } # A monitoring outage must not stop the job.
}
$code = 1
Send-Signal '/start'
try {
    & "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -NonInteractive -File 'C:\Jobs\backup.ps1'
    $code = $LASTEXITCODE
} catch {
    $code = 1
} finally {
    if ($code -eq 0) { Send-Signal '' } else { Send-Signal '/fail' }
}
exit $code
Запуск или настройка
powershell.exe -NoProfile -NonInteractive -File "C:\Jobs\tickwatch-run.ps1"

Что проверить перед запуском

  • Проверьте запуск под той же учётной записью и без открытого рабочего стола. Настройка «Выполнять только для вошедшего пользователя» может мешать ночным задачам.

  • Принудительная остановка может не выполнить finally. Сигнал /start и контроль максимальной длительности нужны для такого случая.

  • Проверяйте результат операции: наличие и размер выгрузки, запись в хранилище. Код 0 подтверждает только то, что сообщил скрипт.

Частые вопросы

Что указывать в поле «Программа»?

Полный путь к powershell.exe. Параметры -NoProfile -NonInteractive -File и путь к обёртке укажите отдельно в аргументах. Используйте принятую у вас политику подписания и выполнения скриптов.

Tickwatch исправит настройки планировщика?

Он сообщает об отсутствии результата или ошибке. Исправлять пароль учётной записи, права и условия запуска нужно на машине с задачей.

Проверьте первый запуск, пока задача ещё работает

Создайте монитор, подставьте свой URL пинга и убедитесь, что приходят сигналы и уведомления.

Мониторинг планировщика заданий Windows · Tickwatch