Как я могу запланировать перезагрузку сервера из командной строки в Windows 2012?
Я хотел бы запланировать одноразовый перезапуск сервера, например, завершить установку обновлений рано утром. Как я могу сделать это из командной строки в Windows 2012?
На Windows 2008 я бы использовал at
команда,
at 2am shutdown -r -f -c "restart"
и забрал остаток дня.
Но в Windows 2012 запуск этой команды говорит мне, что
The AT command has been deprecated. Please use schtasks.exe instead.
Таким образом, эквивалентная команда с schtasks.exe может быть
schtasks /create /sc once /tn restart /tr "shutdown - r -f ""restart""" /st 02:00
Помимо того, что эта команда очень забывается, у нее есть еще один важный недостаток: она намечает задачу на 2 часа сегодня- мало пользы, если я не проснусь в 1 час ночи, чтобы ее запустить.
Согласно справке для schtasks.exe, /sd
Переключатель для установки даты начала не применяется с /sc once
, Поэтому, даже если бы я хотел напечатать завтрашнюю дату в формате мм / дд / гггг, а я нет, я не смогу этого сделать.
Единственное возможное решение, которое я нашел, - здесь, где Кевин Траас предлагает создать пакетный файл для создания запланированного задания незадолго до полуночи, который ждет пару минут, а затем создает другое запланированное задание для запуска команды, которую вы на самом деле хотите запустить. Умно, но далеко не так удобно, как at
,
8 ответов
shutdown
Сама команда имеет параметр задержки /t
Это задерживает отключение на несколько секунд до 10 лет. Если вы хотите запланировать отключение через 14 часов, скажем, вы можете запустить
shutdown /r /t 50400
Вы также можете добавить причину с /d
параметр или комментарий с /c
; бежать shutdown /?
для деталей.
Несмотря на документацию, /SD
Параметр кажется совместимым с /SC ONCE
, Задача успешно создана для выполнения в указанную дату и в указанное время. (Проверено на W8 и W7)
Кроме того, документация XP дляschtasks.exe
заходит так далеко, чтобы сказать /SD
параметр обязателен при использовании /SC ONCE
, так что я думаю, что есть довольно много сценариев, использующих комбинацию.
Пример:
C:\Users\Mitch>schtasks /create /sc once /tn restart /tr "shutdown -r -f ""restart""" /st 23:00 /sd 2013-06-13
SUCCESS: The scheduled task "restart" has successfully been created.
C:\Users\Mitch>
Если вы не согласны с документацией, рассмотрите возможность создания XML-файла напрямую ( схема здесь), который определенно поддерживается и определенно поддерживает задачу, запланированную для однократного запуска в будущем. Простой способ получить нужный файл - создать его в планировщике задач. mmc
привязать и использовать команду экспорта.
Пример:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2013-06-12T21:20:51.004181</Date>
<Author>FOOBAR\Mitch</Author>
</RegistrationInfo>
<Triggers>
<TimeTrigger>
<StartBoundary>2013-06-13T22:20:29</StartBoundary>
<Enabled>true</Enabled>
</TimeTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>FOOBAR\Mitch</UserId>
<LogonType>InteractiveToken</LogonType>
<RunLevel>LeastPrivilege</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>P3D</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>Your command here</Command>
</Exec>
</Actions>
</Task>
Команда для импорта:
schtasks /CREATE /TN "Task Name" /XML filename.xml
Я закончил тем, что создал runat.ps1
повторить некоторые из простых функций at
Включая мудрость из ответа Митча.
Синтаксис runat (time) (command)
например,
runat 2am shutdown -r -f -c "restarting the server"
runat 10:15 msg * it`'s 10:15 everyone!
Если вы тоже испытываете ностальгию по старым добрым временам, когда вам не нужно было печатать...
schtasks /create /ru system /rl highest /sc once /tn restart /tr shutdown -r -f -c \"restarting the server\" /st 02:00 /sd 06/15/2013
... тогда вы можете установить его, выполнив команду powershell:
iex (new-object net.webclient).downloadstring('https://gist.github.com/lukesampson/5779205/raw/install.ps1');install runat https://gist.github.com/lukesampson/5778559/raw
Или вы можете вручную загрузить runat.ps1
Сценарий здесь.
Я использовал это в сценарии для 2012 R2 и прекрасно работает; Это создаст ежедневную задачу, которая перезапускает сервер в 4:30 утра.
schtasks /create /ru system /rl highest /sc DAILY /tn restart /tr "shutdown /r /f /c "Restarting" /st 04:30
Убедитесь, что вы запускаете это из командной строки CMD с правами администратора.
Энди
Еще один скрипт PowerShell для программной перезагрузки компьютера на следующий день в указанное время
$tomorrowDate = (get-date).AddDays(1).ToString("dd/mm/yyyy")
schtasks /delete /tn restart /f
schtasks /create /sc once /ru MyDomain\administrator /rp /tn restart /tr "shutdown -r -f" /st 07:13 /sd $tomorrowDate
Если цель заключается в простой перезагрузке после установки обновлений, вы можете использовать модуль PSWindowsUpdate для установки обновлений. Вы можете скачать его здесь. После установки просто откройте Powershell и введите
Get-WuInstall -AcceptAll -AutoReboot
Я предлагаю использовать команду schtasks с параметром / f.
Используя /f, если есть задача с таким же именем, она модифицируется.
Это очень полезно для развертывания задач с помощью сценариев.
Полный пример перезапуска сервера расписаний:
schtasks /create /ru system /rl highest /sc DAILY /tn Reinicio /tr "shutdown /r /f /t 0 /c "Reinicio"" /st 22:30 /F
Извлечено из: http://www.sysadmit.com/2016/09/windows-programar-apagado-o-reinicio-automatico.html
Этот скрипт позволяет запланировать перезапуск нескольких серверов на определенную дату / время.
https://gallery.technet.microsoft.com/Schedule-restart-of-2c1131fb?redir=0