Как я могу запланировать перезагрузку сервера из командной строки в 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

Другие вопросы по тегам