Как перезагрузить windows server 2018: Как перезагрузить сервер Windows через командную строку

Как перезагрузить сервер Windows через командную строку

Обновлено 15.08.2019

Всем привет мне уже несколько раз писали такой вопрос, как перезагрузить сервер Windows через командную строку. Сегодня я на него отвечу, рассказав о нескольких способах это сделать. Для чего это может быть использовано ну например для написания скрипта, который в нужное время перезагрузит сервер, либо для саморазвития, мотивы могут быть разными, давайте смотреть как это сделать.

Перезагрузить через командную строку

Перезагружать через командную строку мы будем Windows Server 2008 R2, но данная инструкция подойдет как и для 2012 R2 так и для любой клиентской ОС хоть от Windows 7 до Windows 10. В начале мы рассмотрим классическую cmd, открываем ее (Как открыть командную строку читайте тут). Для перезагрузки используется вот такая команда.

shutdown -r -t 0

-r — означает перезагрузка

-t — время равное 0

У вас начнется моментально перезагрузка Windows.

Синтаксис утилиты shutdown

Ниже представлена подробная справка по всем возможным параметрам данной утилиты, думаю вы сможете найти бного полезного для различных задач.

Z:\>shutdown
Использование: shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e] [/f]
[/m \\компьютер][/t xxx][/d [p|u]xx:yy [/c «комментарий»]]

/i Отображение графического интерфейса пользователя. Этот параметр должен быть первым.
/l Завершение сеанса. Этот параметр нельзя использовать с параметрами /m или /d.
/s Завершение работы компьютера.
/r Завершение работы и перезагрузка компьютера.
/g Завершение работы и перезагрузка компьютера. После перезапуска системы, запуск всех зарегистрированных приложений.
/a Отмена завершения работы системы. Этот параметр можно использовать только в период ожидания.
/p Немедленное отключение локального компьютера без предупреждения. Можно использовать с параметрами /d и /f.
/h Переключение локального компьютера в режим гибернации.

Для удобства можно создать ярлык в котором можно вставить данную команду, или же создать cmd или bat файл для удобства. Так же я данную возможность использовал в mmc консоли. Помимо того что можно перезагрузить через командную строку, есть возможность сделать тоже самое и через PowerShell.

Как перезагрузить сервер через PowerShell

Microsoft уже давно несет свой сильный язык в массы, и надо вам сказать он очень функционален, но об этом позже. PowerShell, так же имеет возможность перезагрузить ваш сервер или компьютер через свою командную строку, делается это очень просто. Открываем оболочку PowerShell и вводим вот такой командлет

Restart-Computer имя компьютера

Или для нескольких

Restart-Computer «имя компьютера1», «имя компьютера2» 

Довольно таки просто, есть возможно перезагружать список серверов. Уверен теперь у вас не будет проблем перезагрузить компьютер через командную строку. Существует конечно большое множество подобного рода утилит, но их нужно доставлять. Описанные два средства уже являются компонентами Windows и не требуют установки, что подразумевает моментальное их использование, да и чем меньше на сервере установлено тем лучше, более безопасно, так как любое стороннее по нужно обновлять и следить за этим.

Материал сайта pyatilistnik.org

Выключение и перезагрузка Windows из командной строки

В Windows доступно несколько команд, которые позволяют выключить или перезагрузить локальный или удаленный компьютер. В этой статье мы рассмотрим, как использовать команду shutdown и PowerShell командлеты Restart-Computer и Stop-Computer для выключения/перезагрузки Windows.

Содержание:

  • Использование команды shutdown в Windows
  • Перезагрузка удаленных компьютеров командой shutdown
  • Перезагрузка и выключение Windows с помощью PowerShell

Использование команды shutdown в Windows

Утилита командной строки shutdown является встроенной командой Windows, которая позволяет перезагрузить, выключить компьютер, перевести его в спящий режим или завершить сеанс пользователя. В этой инструкции мы покажем основные примеры использования команды shutdown в Windows (все рассмотренные команды запускаются в окне Выполнить — Win+R ->, в командной строке cmd.exe или в консоли PowerShell).

Команда shutdown имеет следующий синтаксис:

shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f] [/m \\компьютер][/t xxx][/d [p|u]xx:yy [/c "комментарий"]]

Как вы видите, у команды довольно много опций, а также есть возможность выключить/ перезагрузить удаленный компьютере.

Выключение Windows командой Shutdown

Для выключения ОС Windows и компьютера необходимо использовать команду shutdown с ключом /s.

shutdown /s

Перезагрузка Windows

Чтобы перезагрузить компьютер, необходимо добавить параметр /r. После выполнения этой команды Windows корректно перезагрузится.

shutdown /r

Завершение сеанса пользователя

Чтобы завершить текущую сессию пользователя (logout), нужно выполнить команду:

shutdown /l

Эта команда аналогично выполнению команды logoff.

Перевод компьютера в режим гибернации

Для перевода компьютер в режим гибернации (в этом режиме все содержимое памяти записывается в файл hyberfil.sys на диск и компьютер переходит в спящий режим с пониженным электропотреблением), выполните команду:

shutdown /h

Перезагрузка компьютера с сообщением пользователям

Вы можете предупредить всех пользователей Windows о предстоящем выключении / перезагрузки компьютера или сервера, отправив сообщение во все активные сессии (как правило эта возможность используется на терминальных RDS серверах, за которыми одновременно работают несколько пользователей, каждый в своей собственной RDP сессии).

shutdown /r /c “Этот сервер будет перезагружен через 60 секунд.”

Отложенное выключение / перезагрузка компьютера

Можно выключить или перезагрузить компьютер с определенной задержкой (по таймеру). С помощью опции /t можно указать интервал времени (в секундах), через который ПК/сервер будет перезагружен или выключен. Тем самым вы можете предоставить пользователям дополнительное время для того, чтобы успеть сохранить открытые файлы и корректно закрыть приложения. Эту опцию удобно использовать совместно с отправкой сообщения. В этом примере мы указываем, что Windows будет выключена через 10 минут (600 секунд) и информируем пользователей сообщением.

shutdown /s /t 600 /c "Сервер будет выключен через 10 минут. Сохраните свои документы!"

Пользователю будет выдано предупреждение о запланированном выключении: Ваш сеанс будет завершен.

Такую команду удобно использовать для оповещения пользователей с сеансами на RDSH хостах в ферме Remote Desktop Services на Windows Server, когда вы хотите перезагрузить сервер для выполнения обслуживания. Можно использовать совместно с режимом обслуживания RDS (Drain Mode).

Если задержка очень длительная, например, 100 минут (6000 секунд), то вместо предупреждающего окна появляется всплывающее сообщение в нижнем правом углу экрана: «Ваш сеанс будет завершен. Работа Windows будет завершена через 100 мин».

Отмена выключения / перезагрузки компьютера

После запуска команды выключения или перезагрузки Windows, по умолчанию утилита shutdown ожидает 60 секунд, не выполняя никаких действия. Администратор может отменить перезагрузку или выключение устройства, если в течении этого времени успеет выполнить команду:

shutdown /a

После отмены выключения появится всплывающее сообщение в нижнем правом углу экрана: «Выход из системы отменен. Запланировано завершение работы отменено».

Перезагрузить Windows немедленно

Чтобы выключить или перезагрузить компьютер немедленно, не ожидая стандартные 60 секунд, нужно указать значение 0 для параметра /t. Например, для немедленной перезагрузки компьютера:

shutdown /r /t 0

Очень важный ключ /f. Я использую его практически всегда при выключении или перезагрузки серверов Windows. Данный атрибут обеспечивает принудительное завершение всех запущенных программ и процессов, не ожидая подтверждения от пользователя (не будем же мы ждать подтверждения закрытия программ от всех пользователей на терминальном сервере, его можно просто не дождаться).

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

shutdown /g

Ярлык для перезагрузки компьютера

Для удобства пользователей вы можете создать на рабочем столе ярлыки для выключения или перезагрузки компьютера с нужными настройками. Такой ярлык может быть полезен для выполнения перезагрузки из RDP сессии, когда отсутствуют кнопки перезагрузки/завершения работы компьютера в меню Пуск.

Можно распространить такой ярлык на компьютеры пользователей через GPO.

Перезагрузка Windows в определенное время

Чтобы всегда перезагружать/выключать компьютер или сервер в определенное время, вы можете добавить команду shutdown в планировщик заданий Windows taskschd. msc.

Например, следующее задание планировщика будет ежедневно перезагружать компьютер ночью в 0:00.

Либо вы можете создать новое задание планировщика из PowerShell:

$Trigger= New-ScheduledTaskTrigger -At 00:00am -Daily
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "shutdown.exe" -Argument "–f –r –t 120"
Register-ScheduledTask -TaskName "RebootEvertyNight_PS" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force

Задание планировщика также можно распространить на компьютеры с помощью групповых политик.

Перезагрузка удаленных компьютеров командой shutdown

Вы можете перезагрузить удаленный компьютер по сети, для этого у вас должен быть к нему сетевой доступ, а учетная запись, из-под которой запускается команда shutdown должна входить в группу локальных администраторов на удаленном компьютере (сервере):

shutdown /r /t 120 /m \\192.168.1.100

Вы можете предоставить права на удаленную перезагрузкуWindows пользователям без прав локального администратора.

Если все указанные условия выполняются, но при выполнении команды shutdown появляется ошибка ”Отказано в доступе (5)”, на удаленном компьютере нужно разрешить удаленный доступ к административным ресурсам (C$, ADMIN$), изменив значение параметра LocalAccountTokenFilterPolicy на 1.

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "LocalAccountTokenFilterPolicy" /t REG_DWORD /d 1 /f

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

net use \\192.168.31.10 /u:corp\username
shutdown /s /t 60 /f /m \\192.168.31.10

Если вам необходимо удаленно перезагрузить множество компьютеров, их список можно сохранить в текстовый файл и запустить удаленную перезагрузку всех компьютеров с помощью такого PowerShell скрипта:

$sh_msg = "Ваш компьютер будет автоматически перезагружен через 10 минут. Сохраните свои файлы и закройте запущенные программы"
$sh_delay = 600 # секунд
$computers = gc C:\PS\PC-list. txt
foreach ($comp in $computers)
{
& 'C:\Windows\System32\SHUTDOWN.exe' "-m \\$comp -r -c $sh_msg -t $sh_delay"
}

Графический интерфейс команды shutdown

Для тех, кому не комфортно работать в командной строке, есть графический интерфейс для команды shutdown, чтобы его вызвать, наберите:

shutdown /i

Как вы видите, в диалоге удаленного завершения работы вы можете добавить несколько компьютеров, которые нужно перезагрузить/выключить, указать текст уведомления и задать причину выключения для сохранения в журнале Windows.

Перезагрузка и выключение Windows с помощью PowerShell

В PowerShell есть две команды для выключения и перезагрузки компьютера: Restart-Computer и Stop-Computer. Обе команды позволяют выключить или перезагрузить локальный или удаленный компьютер по сети.

Для перезагрузки Windows выполните:

Restart-Computer -force

Чтобы выключить компьютер:

Stop-Computer

По умолчанию перезагрузка начнется через 5 секунд. Можно увеличить задержку перед перезагрузкой:

Restart-Computer –delay 15

У обоих командлетов есть параметр
–ComputerName
, который позволяет задать список удаленных компьютеров.

Например, чтобы удаленно выключить два сервера Windows:

Stop-Computer -ComputerName "Server01", "Server02"

Можно указать учетные данные администратора для подключения к удаленному хосту:

$Creds = Get-Credential
Restart-Computer -ComputerName $Names -Credential $Creds

Для подключения к удаленным компьютерам используется WMI и DCOM (он должны быть включен и настроен). Если WMI не настроен, при запуске команды появится ошибка:

Restart-Computer : Failed to restart the computer wks-t1122h3 with the following error message: 
Access is denied.
Exception from HRESULT: 0x80070005 (E_ACCESSDENIED).

Если на удаленном компьютере настроен WinRM (Windows Remote Management), вы можете использовать для подключения WSman вместо WMI:

Restart-Computer -ComputerName wks-t1122h3 -Protocol WSMan

Если на удаленном компьютер есть активные сессии пользователей, при запуске Restart-Computer появится ошибка:

Restart-Computer : Failed to restart the computer wks-t1122h3 with the following error message:
The system shutdown cannot be initiated because there are other users logged on to the computer. 

Для принудительной перезагрузки нужно добавить параметр -Force:

Restart-Computer -ComputerName wks-t1122h3 –Force

С помощью параметра -For можно перезагрузить компьютер и дождаться, когда он будет доступен. Например, вы хотите убедиться, что удаленный компьютер успешно перезагрузится и на нем стартовала служба WinRM, позволяющая подключиться к нему через WS-Management:

Restart-Computer -ComputerName wks-t1122h3 -Wait -For WinRM

Restarting computer wks-t1122h3
Verifying that the computer has been restarted.

Если нужно одновременно перезагрузить несколько хостов, можно использовать возможности параллельного запуска команд в версии PowerShell 7.x.

Например, вы можете получим список Windows Server в определенном контейнере (Organizational Unit) Active Directory с помощью командлета Get-ADComputer и перезагрузить их одновременно:

$Computers = (Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -SearchBase "OU=Servers,DC=winitpro,DC=loc"). Name
$Computers | ForEach-Object -Parallel {    Restart-Computer -ComputerName $_ -Force} -ThrottleLimit 3

Как запланировать автоматическую перезагрузку Windows Server

В этом блоге подробно описано, как запланировать автоматическую перезагрузку Windows Server (Windows или Server 2008/2019). Вы можете захотеть перезагрузить Windows Server раз в неделю или месяц в рамках планового обслуживания. Это тоже особенно полезно. Скажем, если вы хотите перезагрузить сервер, потому что вы установили определенное программное обеспечение, которое, как вы не ожидали, нуждается в перезагрузке, или есть какие-то обновления. На самом деле вы не можете это сделать, разве что в нерабочее время, и вам не нужно торчать, а затем вы просто хотите, чтобы он перезагрузился сам через пару часов после рабочего дня, когда все ушли.

Запланировать автоматическую перезагрузку Windows Server

1- Выберите строку поиска и введите Планировщик заданий, нажмите на него, чтобы открыть. Вы можете найти его, нажав кнопку «Пуск» в Windows, разверните «Инструменты администратора Windows», откройте Панель управления , чтобы выбрать «Администрирование».

2- Создайте новую базовую задачу с помощью действия «Создать задачу».

3- Введите имя задачи. Я переименовал его в Restart Server или (Restart This Server). Введите описание Расписание Windows Server для автоматического перезапуска. Нажмите далее

4- Поскольку эта задача состоит в том, чтобы просто перезапустить сервер один раз (выбрать один раз), а затем нажать «Далее».

5- Укажите дату и время перезапуска. Нажмите «Далее.

6- Выберите действие «Запустить программу» и нажмите «Далее».

7- Введите shutdown в поле «Программа/скрипт», а затем /r в поле «Добавить аргументы». Нажмите «Далее.

8- Нажмите Готово.

9- Мы почти закончили, если вы хотите, чтобы это работало, если вы выйдете из системы, и вы хотите настроить это, чтобы вы могли использовать его позже. В планировщике заданий щелкните правой кнопкой мыши новое задание и выберите «Свойства».

10- Это будет отображаться на странице общих настроек. Настройки по умолчанию: «Запускать, только когда пользователь вошел в систему», переключите его на «Выполнять независимо от того, вошел ли пользователь в систему или нет». Выберите «Настроить», чтобы выбрать сервер, который вы хотите перезагрузить.

11- Выберите «ОК» после ввода пароля администратора.

Изменение расписания автоматической перезагрузки

Итак, теперь у нас есть задача, которая автоматически перезагрузит наш сервер Windows (компьютер, ПК) один раз.

12- Вернитесь в окно планировщика заданий, щелкните правой кнопкой мыши задание и выберите «Свойства». Выберите вкладку «Триггеры».

13- Выберите однократный триггер и нажмите кнопку «Редактировать». Измените время и дату, нажмите «ОК», и ваш сервер/ПК/компьютер перезагрузится в новое время.

14- Когда вы нажмете «ОК», вам будет предложено повторно ввести пароль администратора.

Смотреть видео: Как запланировать автоматическую перезагрузку Windows Server.

Как запланировать автоматическую перезагрузку Windows Server

Активные часы Windows Server 2016 Головные боли при перезагрузке

Я не совсем уверен, кто решил, что это хорошая идея — попытаться принудительно перезагрузить серверы Windows 2016, тем самым оставив системных администраторов в ожидании сумку, пытаясь выяснить, как помешать этим серверам делать именно то, для чего их перегрузили Microsoft. Я предполагаю, что это попадает в категорию «в то время это казалось хорошей идеей».

Проблема в основном сводится к тому, что на серверах Windows 2016 включено что-то под названием «Часы активности» (я не уверен, что 2019 также страдает). За пределами этого двенадцатичасового (я почти уверен, что это двенадцать) окна после применения обновлений Windows сервер может перезагрузиться сам по себе. Вы можете настроить «Активные часы», но диапазон в двенадцать часов останется. Таким образом, в любое время за пределами этого двенадцатичасового блока сервер может (и, вероятно, будет) перезагружаться.

Когда вы выполняете поиск в Google, вы получаете такие ссылки: https://www.netzen.co.uk/2019/07/17/disable-windows-server-updates-active-hours/

Вы также получите множество ссылок на разочарованных системных администраторов, которые не могут понять, почему их критически важные серверы продолжают перезагружаться, когда они должны быть включены и работать 24 /7.

Хотя некоторые люди сочли приведенную выше ссылку полезной, у меня она не сработала.

После долгих поисков в Google и разочарования из-за невозможности решить проблему я наткнулся на ссылку, которая, наконец, начала проливать свет на проблему: https://docs. ukfast.co.uk/operatingsystems/windows /server2016/windowsupdate.html

Кажется, что задача запланированной перезагрузки встроена в Windows Server 2016 (а также в Windows 10) и в основном скрыта. Эта задача перезагрузки является виновником. После отключения задачи непреднамеренные перезагрузки сервера прекращаются. Там также есть некоторые дополнительные инструкции по той же ссылке о том, как изменить разрешения задачи, чтобы она не включалась автоматически.

Для тех из нас, кто работает в корпоративном мире, статьи, которые дают вам решение проблемы, великолепны. Но когда у вас есть десятки (сотни?) машин для управления, любое отличное решение с графическим интерфейсом все еще остается полусырым решением.

Чтобы применить это изменение так, как того хотят администраторы предприятия, в этих статьях главное научить тому, как выполнять эти действия с помощью командной строки. Powershell спешит на помощь!

Отключить запланированную задачу достаточно просто:

Изменение разрешений для задачи перезагрузки требует немного больше усилий:

После изменения разрешений мы можем подтвердить это изменение с помощью следующей команды:

Конечно, мы хотим чтобы запускать эти команды как настоящий скрипт, а не однострочники, с которыми нам приходится нянчиться. Итак, мы превращаем эти фрагменты кода в настоящие функции и вызываем эти функции:

Сохраняем этот код в какой-нибудь скрипт: disable2016Reboots.ps1 .

Подготовьте список серверов в текстовом файле. Поместите эти серверы в переменную:

$servers = Get-Content -Path .\my2016servers.txt

Затем, если вы являетесь хорошим корпоративным администратором и имеете удаленное взаимодействие WinRM или Powershell или любой другой доступ, необходимый для удаленного запуска команд на этих серверах вы запускаете цикл foreach и вызываете сценарий на каждом из этих серверов:

foreach ($server in $servers) { $result = Invoke-Command -ComputerName $server -FilePath C:\Scripts\server2016RebootTaskDisable.ps1 -Credential $cred ; $результат | Out-File .\my2016ServersCompleted.txt -Append }

Вы сохраняете команду вызова в переменную $result , а затем выводите эту переменную в другой текстовый файл и добавляете к этому же файлу для каждого сервера, на котором вы запускаете сценарий. .

Не забудьте включить $cred , который фактически имеет административные права на машине.

Я настоятельно рекомендую запускать эти команды на тестовом сервере, прежде чем запускать их на рабочих серверах! Но отмена приведенных выше команд (в случае каких-либо проблем) требует изменения двух разделов кода:

Теперь я хотел бы отметить, что я все еще не считаю себя экспертом Powershell. Я не удивлюсь, если есть лучшие способы написания этих сценариев или запуска этих команд. Но я просто показываю, что сработало для меня в моей среде, чтобы заставить большое количество серверов 2016 года начать вести себя нормально.

Как я уже говорил, мне не нравится, как форматирование LinkedIn работает в этих статьях, поэтому я показал скриншоты кода выше, а не реальный текст. Для тех из вас, кому нужно скопировать и вставить, вот вам:

# Включите задачу перезагрузки в планировщике задач.

function enableReboot {

Get-ScheduledTask -TaskPath «\Microsoft\Windows\UpdateOrchestrator\» -TaskName «Reboot» | Enable-ScheduledTask

  }

# Измените разрешения на файл задачи перезагрузки, чтобы разрешить доступ к системе, локальной службе и сетевой службе.