Планировщик заданий windows server 2016 настройка

  • Remove From My Forums

 none

Не срабатывает планировщик заданий по расписанию

  • Вопрос

  • Добрый вечер, может кто тоже сталкивался и знает как решить проблему с планировщиком задач, уже все интернеты перерыл, инфы — море, нужной — ноль.
    Проблема на 2016ом сервере, с отработкой задач по расписанию, хотя скорее всего дело не в ОС, если задаю время события минут через 5-7, то оно отрабатывают в планировщике как нужно, если ставлю например
    на 5 утра, то в 9 смотрю — ничего не отработано.

    Сами задачи простые — запускаются батники, которые делают бэкапы определенных локальных папок с важными данными каждую ночь, галки везде стоят «выполнять с наивысшими правами», вообще экспериментировал
    с этими галками — эффекта ноль.

    В прошлом никогда с планировщиком проблем не было, в 3х организациях в разное время настроил все тоже самое — отрабатывает на ура, в одной из них такой же 2016 сервак стоит, но в четвертой не хочет
    по расписанию и все тут, прям мистика какая то, подскажите пожалуйста куда копать.

    • Изменено

      11 декабря 2019 г. 17:25

Ответы

  • Добрый вечер, может кто тоже сталкивался и знает как решить проблему с планировщиком задач, уже все интернеты перерыл, инфы — море, нужной — ноль.
    Проблема на 2016ом сервере, с отработкой задач по расписанию, хотя скорее всего дело не в ОС, если задаю время события минут через 5-7, то оно отрабатывают в планировщике как нужно, если ставлю например
    на 5 утра, то в 9 смотрю — ничего не отработано.

    Сами задачи простые — запускаются батники, которые делают бэкапы определенных локальных папок с важными данными каждую ночь, галки везде стоят «выполнять с наивысшими правами», вообще экспериментировал
    с этими галками — эффекта ноль.

    В прошлом никогда с планировщиком проблем не было, в 3х организациях в разное время настроил все тоже самое — отрабатывает на ура, в одной из них такой же 2016 сервак стоит, но в четвертой не хочет
    по расписанию и все тут, прям мистика какая то, подскажите пожалуйста куда копать.

    Здравствуйте.

    Что-то уже было подобное (похожая тема)…

    Обратите внимание на свойства триггера «Начать» и «Срок действия»:

    Из за этих настроек задание может некорректно отработать в плане того, что запустится на сутки позже, то есть не в 5 утра в тот день, когда Вы смотрите, а только на следующий день.


    Alexandr_Smirnoff

    • Предложено в качестве ответа
      Vector BCOModerator
      16 декабря 2019 г. 0:13
    • Помечено в качестве ответа
      Petko KrushevMicrosoft contingent staff, Moderator
      24 декабря 2019 г. 7:08

  • 1. Если через 5-7 минут отрабатывает, а в 9 утра нет, то посмотрите наличие птицы «Выполнять только для пользователей вошедших в систему». Если она стоит, то нужно снять и поставить птицу «выполнять для всех пользователей…»

    2. Как у вас реализована периодичность? Однократный запуск с повторением или каждодневный запуск ?

    • Предложено в качестве ответа
      Vector BCOModerator
      16 декабря 2019 г. 0:13
    • Помечено в качестве ответа
      Petko KrushevMicrosoft contingent staff, Moderator
      24 декабря 2019 г. 7:07

  • Разные dism / sfc пока
    не пробовал, но ОС почти девственно чистая, более менее обновленная, из софта только 1с:Предприятие, остальное типичный софт типа архиватора и браузера (никаких сисиклинеров и прочей лабуды), антивирус — защитник виндовс (фарева), Сейчас ставлю
    обновы, но они только вчера вышли, не думаю что что то измениться

    а что с логами и падением служб? dism /online /cleanup-image /restorehealth и sfc /scannow можно бы тоже попробовать. Обе команды безболезненны, но после них может потребоваться перезагрузка


    The opinion expressed by me is not an official position of Microsoft

    • Предложено в качестве ответа
      Vector BCOModerator
      16 декабря 2019 г. 0:13
    • Помечено в качестве ответа
      Petko KrushevMicrosoft contingent staff, Moderator
      24 декабря 2019 г. 7:08

Большинство пользователей и администраторов привыкли использовать графический интерфейс консоли Taskschd.msc для создания заданий планировщика Windows (Task Scheduler), запускаемых по расписанию. Однако в различных скриптах и автоматизируемых задачах для создания заданий планировщика гораздо удобнее использовать возможности PowerShell. В этой статье мы покажем, как создавать и управлять заданиями планировщика Windows из PowerShell.

Содержание:

  • Управление заданиями Task Scheduler с помощью PowerShell
  • Как создать задание планировщика с помощью PowerShell?
  • Получение информации и запуск заданий планировщика из PowerShell
  • Экспорт и импорт заданий планировщика в XML файл

Управление заданиями Task Scheduler с помощью PowerShell

В Windows 10/Windows Server 2016 для управления задачами в планировщике используется PowerShell модуль ScheduledTasks. Список командлетов в модуле можно вывести так:

Get-Command -Module ScheduledTasks

  • Disable-ScheduledTask
  • Enable-ScheduledTask
  • Export-ScheduledTask
  • Get-ClusteredScheduledTask
  • Get-ScheduledTask
  • Get-ScheduledTaskInfo
  • New-ScheduledTask
  • New-ScheduledTaskAction
  • New-ScheduledTaskPrincipal
  • New-ScheduledTaskSettingsSet
  • New-ScheduledTaskTrigger
  • Register-ClusteredScheduledTask
  • Register-ScheduledTask
  • Set-ClusteredScheduledTask
  • Set-ScheduledTask
  • Start-ScheduledTask
  • Stop-ScheduledTask
  • Unregister-ClusteredScheduledTask
  • Unregister-ScheduledTask

powershell командлеты из модуля ScheduledTasks

Совет. Ранее в Windows для создания и управления заданиями планировщика в основном использовались встроенная консольная утилита schtasks.exe.

Как создать задание планировщика с помощью PowerShell?

В современных версиях PowerShell (начиная с PowerShell 3.0 в Windows Server 2012/Windows 8) для создания заданию планировщика нужно использовать командлеты New-ScheduledTaskTrigger и Register-ScheduledTask.

Предположим, наша задача создать задание планировщика, которое должно запускаться при загрузке компьютера (или в определенное время) и выполнять какой-то PowerShell скрипт. Создадим задание планировщика с именем StartupScript_PS. Данное задание должно каждый день в 10:00 запускать PowerShell скрипт, хранящийся в файле C:PSStartupScript.ps1 из-под учетной записи системы (SYSTEM). Задание будет выполняться с повышенными привилегиями (галка “Run with highest privileges”).

$Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily
$User= "NT AUTHORITYSYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:PSStartupScript.ps1"
Register-ScheduledTask -TaskName "StartupScript_PS" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force

Если задание успешно создано, появится надпись Ready.

создать задание планировщика с помощью Register-ScheduledTask

Теперь ваш PowerShell скрипт будет запускаться по указанному расписанию. Если на вашем компьютере настроена PowerShell Execution Policy, блокирующая запуск скриптов PS1, вы можете запустить скрипт их планировщика с параметром –Bypass.

Используйте такую строку при создании нового задания:

$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument “-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:PSStartupScript.ps1"

Совет. Если нужно, чтобы задание запускалось каждый раз при загрузке компьютера, первая строка должна быть такой:
$Trigger= New-ScheduledTaskTrigger -AtStartup

Если нужно выполнять задание при входе пользователя:
$Trigger= New-ScheduledTaskTrigger –AtLogo
n

Откройте консоль
Taskschd.msc
и проверьте, что проверьте, что в Task Scheduler Library появилось новое задание планировщика.

консоль Task Scheduler с новым заданием планировщика

В версии Powershell 2.0 (Windows 7, Windows Server 2008 R2) для создания повторяющегося задания (ScheduledJob) из PowerShell необходимо воспользоваться COM интерфейсом Schedule.Service (либо обновите версию PowerShell). В этом примере мы создадим задание планировщика, которое во время запускает определённый файл с PowerShell скриптом во время загруки. Задание выполняется с правами системы (System).

$TaskName = "NewPsTask"
$TaskDescription = "Запуск скрипта PowerShell из планировщика"
$TaskCommand = "c:windowssystem32WindowsPowerShellv1.0powershell.exe"
$TaskScript = "C:PSStartupScript.ps1"
$TaskArg = "-WindowStyle Hidden -NonInteractive -Executionpolicy unrestricted -file $TaskScript"
$TaskStartTime = [datetime]::Now.AddMinutes(1)
$service = new-object -ComObject("Schedule.Service")
$service.Connect()

$rootFolder = $service.GetFolder("")
$TaskDefinition = $service.NewTask(0)
$TaskDefinition.RegistrationInfo.Description = "$TaskDescription"
$TaskDefinition.Settings.Enabled = $true
$TaskDefinition.Settings.AllowDemandStart = $true
$triggers = $TaskDefinition.Triggers
#http://msdn.microsoft.com/en-us/library/windows/desktop/aa383915(v=vs.85).aspx
$trigger = $triggers.Create(8)

Получение информации и запуск заданий планировщика из PowerShell

Вы можете вывести список всех активных заданий планировщика в Windows с помощью команды:

Get-ScheduledTask -TaskPath | ? state -ne Disabled

Чтобы получить информацию о конкретном задании:

Get-ScheduledTask CheckServiceState_PS| Get-ScheduledTaskInfo

LastRunTime : 4/6/2021 10:00:00 AM
LastTaskResult : 267011
NextRunTime : 4/7/2021 10:00:00 AM
NumberOfMissedRuns : 0
TaskName : CheckServiceState_PS
TaskPath : 
PSComputerName :

информация о запуске задания Get-ScheduledTaskInfo

Вы можете отключить это задание:

Get-ScheduledTask CheckServiceState_PS | Disable-ScheduledTask

Чтобы включить задание:

Get-ScheduledTask CheckServiceState_PS | Enable-ScheduledTask

Чтобы запустить задание немедленно (не дожидаясь расписания), выполните:

Start-ScheduledTask CheckServiceState_PS

отключить/включить/запустить задание планировщика с помощью PowerShell

Чтобы полностью удалить задание из Task Scheduler:

Unregister-ScheduledTask -TaskName CheckServiceState_PS

Если нужно изменить имя пользователя, из-под которого запускается задание и, например, режим совместимости, используйте командлет Set-ScheduledTask:

$task_user = New-ScheduledTaskPrincipal -UserId 'winitprokbuldogov' -RunLevel Highest
$task_settings = New-ScheduledTaskSettingsSet -Compatibility 'Win7'
Set-ScheduledTask -TaskName CheckServiceState_PS -Principal $task_user -Settings $task_settings

При появлении ошибки “Set-ScheduledTask : No mapping between account names and security IDs was done” проверьте, что у вас указано правильное имя пользователя.

Set-ScheduledTask : No mapping between account names and security IDs was done

Экспорт и импорт заданий планировщика в XML файл

С помощью PowerShell можно экспортировать любое задания планировщика в текстовый XML файл для распространения на другие компьютеры. Вы можете экспортировать задание из графического интерфейса Task Scheduler или из консоли PowerShell.

Следующая команда экспортирует задание StartupScript_PS в файл StartupScript_PS.xml:

Export-ScheduledTask "StartupScript_PS" | out-file c:tempStartupScript_PS.xml

Export-ScheduledTask - импорт задания планировщика в xml файла

Командлет Export-ScheduledTask не доступен в PowerShell 2.0. Поэтому в Windows 7 / 2008 R2 для экспорта настроек задания в XML файл лучше воспользоваться встроенной утилитой schtasks, вывод которой нужно перенаправить в текстовый файл:

schtasks /query /tn "NewPsTask" /xml >> "c:psNewPsTask.xml"

После того, как настройки задания планировщика экспортированы в XML файл, его можно импортировать на любой другой компьютер с помощи графической консоли, SchTasks.exe или PowerShell.

Воспользуйте командлетом PowerShell Register-ScheduledTask чтобы параметры задания из файла и зарегистрировать его:

Register-ScheduledTask -Xml (Get-Content “\Server1publicNewPsTask.xml” | out-string) -TaskName "NewPsTask"

Примечание. В PowerShell 2.0 (Windows 7/Server 2008 R2) импорт задания также проще выполнить с помощью утилиты schtasks. Первая команда создаст новое задание. Вторая – сразу запустит его (не дожидаясь срабатывания триггера).

schtasks /create /tn "NewPsTask" /xml "\Server1publicNewPsTask.xml " /ru corpaaivanov /rp Pa$$w0rd
schtasks /Run /TN "NewPsTask"

Обратите внимание, что в этом примере указаны данные учетной записи, из-под которой будет запускаться задание. Если имя и пароль учетной записи не указаны, то т.к. они не хранятся в задании, они будут запрошены при импорте.

  • Remove From My Forums
  • Question

  • I’m trying to use Task Scheduler in Server 2016 to upload files to a vendors AWS S3 bucket. Nothing has worked using Task Scheduler.

    If I run the .bat script on it’s own it works just fine and the files are uploaded, but not in Task Scheduler.

    If I run the same commands in a Powershell script on it’s own it runs just fine and the files are uploaded, but not in Task Scheduler. 

    Task Scheduler history logs says, «Task completed» as you can see from the image I attached.

    Settings I have in Task Scheduler:

    • Run whether user is logged on or not
    • Run with highest privileges
    • Configure for Windows Server 2016
    • Repeat task every 5 minutes for a duration of Indefinitely
    • Enabled
    • Action: Run a Program
    • Program/script «C:scriptsname_of_file.bat
    • Star in c:scripts

    Does Server 2016 have some kind of safety feature that I need to enable for this to work in Task Scheduler?

    I am a Domain Admin.

    • Edited by

      Sunday, February 3, 2019 9:59 PM

  • Remove From My Forums
  • Question

  • I’m trying to use Task Scheduler in Server 2016 to upload files to a vendors AWS S3 bucket. Nothing has worked using Task Scheduler.

    If I run the .bat script on it’s own it works just fine and the files are uploaded, but not in Task Scheduler.

    If I run the same commands in a Powershell script on it’s own it runs just fine and the files are uploaded, but not in Task Scheduler. 

    Task Scheduler history logs says, «Task completed» as you can see from the image I attached.

    Settings I have in Task Scheduler:

    • Run whether user is logged on or not
    • Run with highest privileges
    • Configure for Windows Server 2016
    • Repeat task every 5 minutes for a duration of Indefinitely
    • Enabled
    • Action: Run a Program
    • Program/script «C:scriptsname_of_file.bat
    • Star in c:scripts

    Does Server 2016 have some kind of safety feature that I need to enable for this to work in Task Scheduler?

    I am a Domain Admin.

    • Edited by

      Sunday, February 3, 2019 9:59 PM

985f518753bdb8eb684f2fd7a9a9c8f3.png
Время 10-50, а толку ноль :(
Сервис запущен — задания не выполняются.
Журнал пустой.
На 7 без проблем всё это дело работает…
Есть идеи?

В общем бред, если ставить однократно и повторы — то работает по повторам, если ежедневно и повторы — то уже не работает (в 7 работало)


  • Вопрос задан

    более трёх лет назад

  • 2560 просмотров

Пригласить эксперта

Это известный, хоть и малообсуждаемый баг 2016 сервера. Обещают исправить в осеннем апдейте.
Баг заключается в том, что автоповтор перестаёт работать после ребута сервера.
Костыль — перевести дату первого запуска на будущее значение, чтобы система его заново стартонула и пошла обрабатывать. И таким образом переводить стрелки задач после каждого ребута.

Подробно описано:
https://answers.microsoft.com/en-us/windows/forum/…


  • Показать ещё
    Загружается…

07 февр. 2023, в 23:29

3000 руб./за проект

07 февр. 2023, в 23:29

51000 руб./за проект

07 февр. 2023, в 23:02

2000 руб./за проект

Минуточку внимания

Profile picture for user Олег

Windows Server

Столкнулся с невозможностью настроить периодичность резервного копирование реже одного раза в сутки в Windows Server Backup. ОС Windows Server 2016. Проблему легко можно решить через Task Scheduler.

Я настроил резервное копирование через Windows Server Backup с периодичностью раз в сутки:

Windows Server 2016 — настройка Windows Server Backup

Теперь мне нужно изменить частоту резервного копирования на раз в неделю. Через Windows Server Backup этого сделать не удастся. Запускаем Task Scheduler:

backup

Заходим в Task Scheduler Library > Microsoft > Windows > Backup.

Видим расписание нашего резервного копирования. Каждый день в 1:00. Редактируем:

backup

Переходим в триггеры, редактируем.

backup

Легко устанавливаем периодичность раз в неделю по воскресеньям в 0:10. Ok.

backup

Указываем логин-пароль пользователя, от имени которого настраивали резервное копирование. OK. Готово

Примечательно, что если посмотреть в оснастке Windows Server Backup, то он всё ещё считает, что бэкап будет каждый день.

backup

Однако если посмотреть туда же через несколько дней, то увидим следующее:

backup

Видно, что первый бэкап сделался 3-го числа, но уже 9-е, а Oldest copy так и стоит 3-е число. Бэкап будет запущен согласно расписанию в Task Scheduler.

Понравилась статья? Поделить с друзьями:
  • Планировщик задач в windows 10 через командную строку
  • Планировщик заданий windows server 2008 r2
  • Планировщик задач в windows 10 перезагрузка пк
  • Планирование графического процессора с аппаратным ускорением windows 11 что это
  • Планировщик задач в windows 10 отключить задачу