Если нужно настроить регулярную (по определенному расписанию) перезагрузку или выключение Windows компьютера (сервера), проще всего создать задание в планировщике задач.
Чтобы разово перезагрузить компьютер в определенное время, можно создать задание отложенной перезагрузки с помощью PowerShell скрипта:
[datetime]$RestartTime = '17:00'
[datetime]$CurrentTime = Get-Date
[int]$WaitSeconds = ( $RestartTime - $CurrentTime ).TotalSeconds
shutdown -r -t $WaitSeconds
Но чаще всего используются запланированные задания перезагрузки. Например, вам нужно создать задание, которое будет автоматически перезагружать сервер каждый понедельник в 04:00 утра.
Задание планировщика для автоматической перезагрузки (выключения) Windows
Откройте консоль Task Scheduler (
taskschd.msc
) и запустите мастер создания задания: Action -> Create Basic Task.
Задайте имя задания: RebootMonday
Настройие расписание запуска задания. В нашем примере это еженедельное задание (Weekly), которое запускается каждый понедельник.
Выберите Start a program. Будем запускать встроенную команду shutdown.exe для перезагрузки с параметрами:
Program:
%SYSTEMROOT%\System32\shutdown.exe
Add arguments (optional):
/r /f /t 120 /d p:0:0 /c "Автоперезагрузка по понедельникам. Для отмены: shutdown.exe /a"
-
/r
— перезагрузка -
/f
– принудительно завершить все приложения -
/t 120
– таймаут перед перезагрузкой -
/d p:0:0
— добавить в Event Viewer плановую причину перезагрузки: Other (planned) -
/с
– вывести информационное сообщение пользователям компьютера перед перезарузкой
Чтобы задание запускалось автоматически, независимо от наличия активной сессий пользователя на компьютере:
- Откройте свойства задания в консоли Task Scheduler
- Выберите опцию Run whether user is logged or not
- Нажмите кнопку Change User or Group и укажите System
- Теперь задание будет запускаться от имени NT AUTHORITY\SYSTEM.
- Проверьте, что задание включено.
Теперь данный компьютер будет автоматически перезагружаться в запланированное время, выводя уведомление перед рестартом.

Или можно удаленно разбудить Windows компьютер через Wake on LAN.
С помощью PowerShell можно быстро создать такое задание планировщика с командой перезагрузки:
$taskName = "WeeklyAutoReboot"
$taskDescription = "Automatically reboots the server every Monday at 04:00 AM"
$action = New-ScheduledTaskAction -Execute "shutdown.exe" -Argument "/r /f /t 120 /d p:0:0 /c `"Автоперезагрузка по понедельникам. Для отмены: shutdown.exe /a`""
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 4:00am
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -RunLevel Highest
Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Principal $principal
Перезагрузка (выключение) Windows компьютеров с помощью групповых политик
Если нужно настроить выключение (перезагрузку) по расписанию нескольких компьютеров в домене AD, такое задание планировщика можно создать с помощью групповых политик.
- Откройте консоль управления доменными GPO (
gpmc.msc
), создайте новую GPO и назначьте ее на OU с компьютерами, которые нужно перезагружать/выключать по расписанию. - Отредактируйте новую GPO и перейдите в раздел Computer Configuration -> Preferences -> Control Panel Settings -> Scheduled Tasks;
- Создайте новое задание: New -> Scheduled task (At least Windows 7);
- Задайте имя задания и запуск от имени SYSTEM (как описано выше)
- На вкладке Triggers добавьте расписание для задания
- На вкладке Actions добавьте запуск команды shutdown.exe с параметрами
- Сохраните задание
- Обновите настройки GPO на клиенте, и проверьте что в планировщике задания появилось задание запланированной перезагрузки Windows.
Если нужно привязать задание автоматической перезагрузки/выключения компьютера к завершению другого задания (например, перезагрузиться после успешного окончания бэкапа), см. пример реализации в статье Как запустить задание планировщика Windows после завершения другого задания?