Windows server 2012 r2 планировщик заданий

Имеем Windows Server 2012 R2. Задача — автоматически перезагружать сервер каждый понедельник в 5 утра. Приступаем.

Запускаем Планировщик заданий, создаём в нём папку «reboot»:

reboot

Делаем Create Basic Task… Запускается мастер:

reboot

Указываем Name, Description:

reboot

Кликаем Next:

reboot

Выбираем период Weekly. Next:

reboot

Указываем начало — ближайший понедельник 5 утра. Ставим галку Monday. Next:

reboot

Выбираем Start a program. Next:

reboot

В Program/script: пишем:

%SYSTEMROOT%\System32\shutdown.exe

В Add arguments (optional):

/r /f /t 90 /d p:0:0 /c "Перезапуск по понедельникам. Отмена: shutdown.exe /a"

Где:

  • /r — перезагрузка,
  • /f — принудительное закрытие всех приложений,
  • /t 90 — время ожидания до начала перезагрузки 90 сек,
  • /d p:0:0 — причины перезагрузки для журнала. В данном случае, мы указали: p — запланированная перезагрузка, 0:0 — «Other (planned)»,
  • /c  комментарий в свободной форме длинной не более 512 символов. Комментарий будет показываться юзерам 90 секунд. За это время можно отменить перезагрузку командой shutdown.exe /a.

Список параметров и причин перезагрузки можно посмотреть shutdown.exe /?

reboot

Мастер не доделали, кликаем Finish. Создаётся задача  — редактируем её.

win

Ставим Run whether user is logged on or not. Добавим галку Run with highest privileges. Ok:

Нас попросят ввести имя пользователя, от имени которого будет выполняться задание. И пароль. Готово:

win

Сам пока не проверял результатов. В ближайший понедельник посмотрим…

P.S.

Две недели прошло — шедулер нормально перезагружает сервер по понедельникам.

microsoft-windows:windows-server-2012-r2:adds:how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa:how-to-create-a-windows-scheduler-task-on-behalf-of-msa-gmsa-in-powershell

Содержание

Как создать задание Планировщика Windows Task Scheduler от имени учётной записи MSA/gMSA в PowerShell

Графическая оболочка Планировщика заданий Windows Task Scheduler в ОС Windows Server 2012 R2 не умеет работать с учётными записями MSA/gMSA. Однако для настройки задания планировщика Windows, которое должно выполняться от имени сервисной учётной записи MSA/gMSA, мы можем воспользоваться возможностями оболочки PowerShell.

Создание простого задания

Запустим оболочку PowerShell с правами Администратора и создадим простое задание планировщика Windows для запуска некоторого PS-скрипта с ежедневным выполнением, например в 23:00:

$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
 -Argument "-NoProfile -command `"D:\FBInst1\Tools\FBBases-Backup.ps1`""
$Trigger = New-ScheduledTaskTrigger -Daily -At 23:00
$SvcUser = New-ScheduledTaskPrincipal -UserID KOM\s-S11$ -LogonType Password
Register-ScheduledTask -TaskName "Firebird DBs (Instance1) Backup" `
-Action $Action -Trigger $Trigger -Principal $SvcUser

Откроем графическую консоль управления планировщиком Windows и проверим корректность созданного задания.

Изменение созданного задания

В случае необходимости изменения созданного задания с использованием учётной записи MSA/gMSA не нужно пытаться изменить здание через графическую консоль, так как это приведёт к запросам аутентификации для учётной записи gMSA и ошибкам сохранения задания. Изменить созданное задание можно с помощью PowerShell. Например, чтобы изменить время запуска задания можем выполнить следующий код:

$Trigger = New-ScheduledTaskTrigger -Daily -At 23:05
Set-ScheduledTask -TaskName "Firebird DBs (Instance1) Backup" -Trigger $Trigger

Задания со сложным расписанием

Рассмотрим ещё один пример создания задачи планировщика, но уже с более сложным расписанием выполнения. Например, нам нужно, чтобы задание выполнялось дважды в день в определённое время. В этом случае в качестве значения триггера используется массив объектов, созданных командлетом New-ScheduledTaskTrigger. Например, задача, выполняемая ежедневно утром и вечером в определённое время может быть создана так:

$Action = New-ScheduledTaskAction -Execute "C:\Programms\MyProgramm.exe"
$Trigger = @(
    $(New-ScheduledTaskTrigger -Daily -At 8:30),
    $(New-ScheduledTaskTrigger -Daily -At 20:30)
)
$SvcUser = New-ScheduledTaskPrincipal -UserID DOMAIN\gMSAAccount$ -LogonType Password
$TDescription = 'Описание моей задачи'
Register-ScheduledTask -TaskName "My Task" -TaskPath "\My Tasks" -Action $Action `
-Trigger $Trigger -Principal $SvcUser -Description $TDescription

Если требуется постоянный цикличный запуск задания, например, каждые 5 минут, то значение триггера можно задать следующим образом:

$Trigger = New-ScheduledTaskTrigger `
    -Once `
    -At (Get-Date) `
    -RepetitionInterval (New-TimeSpan -Minutes 5) `
    -RepetitionDuration ([System.TimeSpan]::MaxValue)

Ещё один пример указания триггера с условием, что задание должно выполняться в определённое время, но только по рабочим дням недели:

$Trigger = New-ScheduledTaskTrigger -Weekly `
-DaysOfWeek Monday,Tuesday,Wednesday,Thursday,Friday -At 9:10

Триггер -AtStartup

При создании заданий Планировщика с триггером по запуску ОС (-AtStartup) может потребоваться дополнительно установить в свойствах триггера небольшую задержку по времени для того, чтобы дать возможность завершения инициализации механизмов доменной аутентификации. Пример такой настройки рассмотрен здесь.

# Добавляем в первый триггер задания Планировщика 3-минутную задержку перед запуском
# А также отключаем ограничение времени выполнения задания
# Формат указания длительности времени https://en.wikipedia.org/wiki/ISO_8601#Durations 
#
$Task.Triggers[0].Delay = "PT3M"
$Task.Settings.ExecutionTimeLimit = "PT0S"
$Task | Set-ScheduledTask

Проверено на следующих конфигурациях:

Версия ОС
Windows Server 2012 R2 Standard EN (6.3.9600)

Автор первичной редакции:
Алексей Максимов
Время публикации: 06.06.2019 20:51

microsoft-windows/windows-server-2012-r2/adds/how-to-use-managed-service-accounts-msa-and-group-managed-service-account-gmsa/how-to-create-a-windows-scheduler-task-on-behalf-of-msa-gmsa-in-powershell.txt

· Последнее изменение: 13.10.2019 14:02 —

Алексей Максимов


Большинство пользователей и администраторов привыкли использовать графический интерфейс консоли 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:\PS\StartupScript.ps1 из-под учетной записи системы (SYSTEM). Задание будет выполняться с повышенными привилегиями (галка “Run with highest privileges”).

$Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript.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:\PS\StartupScript.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:\windows\system32\WindowsPowerShell\v1.0\powershell.exe"
$TaskScript = "C:\PS\StartupScript.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 'winitpro\kbuldogov' -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:\temp\StartupScript_PS.xml

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

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

schtasks /query /tn "NewPsTask" /xml >> "c:\ps\NewPsTask.xml"

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

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

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

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

schtasks /create /tn "NewPsTask" /xml "\\Server1\public\NewPsTask.xml " /ru corp\aaivanov /rp Pa$$w0rd
schtasks /Run /TN "NewPsTask"

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

This article describes how to create scheduled tasks on a Microsoft® Windows® server.

Perform the following steps to access the Task Scheduler:

  1. Open the Windows Run command by pressing the Windows key and r together.

  2. In the Run window, enter taskschd.msc and press Enter.

Perform the following steps to create a scheduled task:

  1. Optional If a folder for custom tasks does not exist already, create one to separate automatically
    created tasks from custom tasks. Right-click Task Scheduler Library in the left-hand pane, click
    New Folder, enter a name such as My Custom Tasks, and click OK.

  2. To select the folder in which to store the task, such as the previously created
    My Custom Tasks folder, click the folder.

  3. To create a new task, right-click the chosen folder and click Create Basic Task to launch the
    Create Basic Task Wizard.

    Note: For more advanced options, choose Create Task, which provides additional tools beyond
    the common options.

  4. On the first screen, enter a Name and Description and then click Next.

  5. On the Trigger screen, choose when you want the task to run. You can trigger tasks on a
    schedule or by a computer event, such as when Windows starts or when a user logs on. Click Next.

  6. Depending on the trigger you choose, the next screen might ask you for more trigger configuration details,
    such as recurrence frequency or request details about the event that triggers the task. Click Next.

  7. Choose an action to perform after the trigger event occurs. You can set an action to launch a program
    or script, send an email notification, or display a message to users. Click Next.

  8. Configure the specifics of the action such as the email address or the application you want to launch
    and click Next.

  9. Review the details of the task and click Finish to finalize task creation.

Updated 2 months ago


Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Проверка памяти видеокарты amd на ошибки windows
  • Stop 0x00000074 windows 7 при установке
  • Универсальная программа для сканирования hp для windows 7
  • Как на клавиатуре обозначается windows
  • Keywords 0x80000000000000 windows 7