- Remove From My Forums
-
Вопрос
-
Моё почтение.
Упал планировщик заданий на сервере. При запуске сообщает, что планировщик не запущен на этом компьютере и выдаёт ошибку 1067. Проверка sfc /scannow результатов не дала. Директорию Shedule из реестра удалял и восстанавливал. В сервисах
стоит автоматический запуск. При попытке запустить всё та же ошибка. Возможно ли как то переустановить планировщик? удалив его полностью. Или перенести с другого сервера. В логах системы ничего конктреного, «не удалось запустить уже
6 раз» и всё в таком духе. Последние обновления скачены и установлены. Он вообще отказывается реагировать.С наилучшими пожеланиями.
Ответы
-
Оставлю решение, на случай если кому либо понадобится.
Скорее всего поломалась какая-то задача планировщика. Чтобы это проверить идём в редактор реестра и находим раздел Tree: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionScheduleTaskCacheTree. Переименовываем
Tree в Tree.old и проверяем, запускается ли планировщик. Если запускается, переименовываем Tree.old обратно в Tree и ищем неработающую задачу таким же образом: добавлением в конец имени «.old», да в
принципе чего угодно. Когда находим неработающую задачу — удаляем её из ветки и планировщик будет работать нормально.В случае, если после переименования ветки Tree планировщик не запускается — значит дело в другом и этот метод не сработает.
-
Помечено в качестве ответа
16 марта 2020 г. 7:46
-
Помечено в качестве ответа
Большинство пользователей и администраторов привыкли использовать графический интерфейс консоли 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
Совет. Ранее в Windows для создания и управления заданиями планировщика в основном использовались встроенная консольная утилита schtasks.exe.
Как создать задание планировщика с помощью PowerShell?
В современных версиях PowerShell (начиная с PowerShell 3.0 в Windows Server 2012/Windows для создания заданию планировщика нужно использовать командлеты 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.
Теперь ваш 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 появилось новое задание планировщика.
В версии 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-ScheduledTask CheckServiceState_PS | Disable-ScheduledTask
Чтобы включить задание:
Get-ScheduledTask CheckServiceState_PS | Enable-ScheduledTask
Чтобы запустить задание немедленно (не дожидаясь расписания), выполните:
Start-ScheduledTask CheckServiceState_PS
Чтобы полностью удалить задание из 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” проверьте, что у вас указано правильное имя пользователя.
Экспорт и импорт заданий планировщика в XML файл
С помощью PowerShell можно экспортировать любое задания планировщика в текстовый XML файл для распространения на другие компьютеры. Вы можете экспортировать задание из графического интерфейса Task Scheduler или из консоли PowerShell.
Следующая команда экспортирует задание StartupScript_PS в файл StartupScript_PS.xml:
Export-ScheduledTask "StartupScript_PS" | out-file c:tempStartupScript_PS.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"
Обратите внимание, что в этом примере указаны данные учетной записи, из-под которой будет запускаться задание. Если имя и пароль учетной записи не указаны, то т.к. они не хранятся в задании, они будут запрошены при импорте.
Время 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 руб./за проект
Минуточку внимания
I need to schedule a Task inside of my Windows server 2016 to run every minute, how would one accomplish that?
I’ve tried Task Scheduler->Create Task, but the minimum is every 5 minutes,
Is it to possible to schedule task (run exe) every minute ?
any ideas? thanks!
asked Apr 10, 2018 at 8:58
You can set 1 minute frequency through task scheduler itself. The option does not appear in the dropdown list, but you can edit the text and it will accept a variety of values from 1 minute
upwards.
answered Apr 11, 2018 at 10:11
MisterSmithMisterSmith
2,7741 gold badge10 silver badges13 bronze badges
1
I need to schedule a Task inside of my Windows server 2016 to run every minute, how would one accomplish that?
I’ve tried Task Scheduler->Create Task, but the minimum is every 5 minutes,
Is it to possible to schedule task (run exe) every minute ?
any ideas? thanks!
asked Apr 10, 2018 at 8:58
You can set 1 minute frequency through task scheduler itself. The option does not appear in the dropdown list, but you can edit the text and it will accept a variety of values from 1 minute
upwards.
answered Apr 11, 2018 at 10:11
MisterSmithMisterSmith
2,7741 gold badge10 silver badges13 bronze badges
1
Столкнулся с невозможностью настроить периодичность резервного копирование реже одного раза в сутки в Windows Server Backup. ОС Windows Server 2016. Проблему легко можно решить через Task Scheduler.
Я настроил резервное копирование через Windows Server Backup с периодичностью раз в сутки:
Windows Server 2016 — настройка Windows Server Backup
Теперь мне нужно изменить частоту резервного копирования на раз в неделю. Через Windows Server Backup этого сделать не удастся. Запускаем Task Scheduler:
Заходим в Task Scheduler Library > Microsoft > Windows > Backup.
Видим расписание нашего резервного копирования. Каждый день в 1:00. Редактируем:
Переходим в триггеры, редактируем.
Легко устанавливаем периодичность раз в неделю по воскресеньям в 0:10. Ok.
Указываем логин-пароль пользователя, от имени которого настраивали резервное копирование. OK. Готово
Примечательно, что если посмотреть в оснастке Windows Server Backup, то он всё ещё считает, что бэкап будет каждый день.
Однако если посмотреть туда же через несколько дней, то увидим следующее:
Видно, что первый бэкап сделался 3-го числа, но уже 9-е, а Oldest copy так и стоит 3-е число. Бэкап будет запущен согласно расписанию в Task Scheduler.