В Windows доступно несколько команд, которые позволяют выключить или перезагрузить локальный или удаленный компьютер. В этой статье мы рассмотрим, как использовать команду shutdown и PowerShell командлеты Restart-Computer и Stop-Computer для выключения/перезагрузки Windows.
Использование команды 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 минут. Сохраните свои документы!"
Пользователю будет выдано предупреждение о запланированном выключении: Ваш сеанс будет завершен.
Если задержка очень длительная, например, 100 минут (6000 секунд), то вместо предупреждающего окна появляется всплывающее сообщение в нижнем правом углу экрана: «Ваш сеанс будет завершен. Работа Windows будет завершена через 100 мин».
Отмена выключения / перезагрузки компьютера
После запуска команды выключения или перезагрузки Windows, по умолчанию утилита shutdown ожидает 60 секунд, не выполняя никаких действия. Администратор может отменить перезагрузку или выключение устройства, если в течении этого времени успеет выполнить команду:
shutdown /a
После отмены выключения появится всплывающее сообщение в нижнем правом углу экрана: «Выход из системы отменен. Запланировано завершение работы отменено».
Перезагрузить Windows немедленно
Чтобы выключить или перезагрузить компьютер немедленно, не ожидая стандартные 60 секунд, нужно указать значение 0 для параметра /t. Например, для немедленной перезагрузки компьютера:
shutdown /r /t 0
Очень важный ключ /f. Я использую его практически всегда при выключении или перезагрузки серверов Windows. Данный атрибут обеспечивает принудительное завершение всех запущенных программ и процессов, не ожидая подтверждения от пользователя (не будем же мы ждать подтверждения закрытия программ от всех пользователей на терминальном сервере, его можно просто не дождаться).
Следующая команда выполнит перезагрузку компьютера с автоматическим запуском всех зарегистрированных приложений после перезагрузки (имеются в виду приложения, зарегистрированные в системе с использованием функции API RegisterApplicationRestart).
shutdown /g
Ярлык для перезагрузки компьютера
Для удобства пользователей вы можете создать на рабочем столе ярлыки для выключения или перезагрузки компьютера с нужными настройками. Такой ярлык может быть полезен для выполнения перезагрузки из RDP сессии, когда отсутствуют кнопки перезагрузки/завершения работы компьютера в меню Пуск.
Перезагрузка 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
Если все указанные условия выполняются, но при выполнении команды shutdown появляется ошибка ”Отказано в доступе (5)”, на удаленном компьютере нужно разрешить удаленный доступ к административным ресурсам (C$, ADMIN$), изменив значение параметра LocalAccountTokenFilterPolicy на 1.
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "LocalAccountTokenFilterPolicy" /t REG_DWORD /d 1 /f
Вы можете включить эти правила файервола с помощью PowerShell:
Get-NetFirewallrule -name WMI-RPCSS-In-TCP,WMI-WINMGMT-In-TCP,FPS-SMB-In-TCP| Enable-NetFirewallRule
Если для подключения к удаленному компьютеру нужно указать учетные данные пользователя, можно использовать команду:
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)
{
Invoke-Expression "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-t1122h2 with the following error message: Access is denied. Exception from HRESULT: 0x80070005 (E_ACCESSDENIED).
Если на удаленном компьютере настроен WinRM (Windows Remote Management), вы можете использовать для подключения WSman вместо WMI:
Restart-Computer -ComputerName wks-t1122h2 -Protocol WSMan
Если на удаленном компьютер есть активные сессии пользователей, при запуске Restart-Computer появится ошибка:
Restart-Computer : Failed to restart the computer wks-t1122h2 with the following error message: The system shutdown cannot be initiated because there are other users logged on to the computer.
qwinsta /server:wks-t1122h2
Для принудительной перезагрузки нужно добавить параметр -Force:
Restart-Computer -ComputerName wks-t1122h2 –Force
С помощью параметра -For можно перезагрузить компьютер и дождаться, когда он будет доступен. Например, вы хотите убедиться, что удаленный компьютер успешно перезагрузится и на нем стартовала служба WinRM, позволяющая подключиться к нему через WS-Management:
Restart-Computer -ComputerName wks-t1122h2 -Wait -For WinRM
Restarting computer wks-t1122h2 Verifying that the computer has been restarted.
Restart-Computer -ComputerName wks-t1122h2 -Wait -For TermService
Если нужно одновременно перезагрузить несколько хостов, можно использовать возможности параллельного запуска команд в версии 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
Спасибо!!!!
Век живи, век учись… Про интерфейс даже не знал….
Спасибо огромное !!!
Была небольшая проблемка, которая доставляла некоторые неудобства, эта статья помогла, спасибо!
А как запретить подобную перезагрузку? весь инет перерыл так и не нашёл ничего путного?
Я сам админ в своей сети но по мимо меня есть ещё (шутники)
shutdown /a
Стоит задача — перезагрузить компьютеры домена в максимально короткий срок. Но скрипты Powershell, если в них подставляется список компьютеров, отрабатывают очень медленно, перебором по одному
$ComputerArray = Get-Content "C:\Distr\Scripts\comps.txt"
ForEach ($Name in $ComputerArray) {
Write-Host " Reboot $Name..."
if (Test-connection $Name -count 1 -quiet)
{
Restart-Computer -ComputerName $Name -Force
Write-Host " Ok"
}
else
{
Write-Host " No response"
}
}
Список компьютеров в районе 300 штук, так что если некоторые выключены перебор может затянуться минут на 40.
Ещё есть команда
ForeEach-Object -Parallel
, но я что-то не могу её настроить для перезагрузки.Например
$Names = Get-Content "C:\Distr\Scripts\comps.txt"
$ComputerArray = $Names
$ComputerArray | ForeEach-Object -Parallel {
Restar-Computer -ComputerName $_ -Force
} -ThrottleLimit 5
выдаёт ошибку.
Не знаток особо PowerShell, не могу понять где что не так.
Есть ли что-то убыстряющее одновременную перезагрузку большого числа компьютеров в домене?
На самом деле это всё просто и мануалов полно по этим функциям. А вот я нигде не нашёл ни одного рабочего манула для завершения работы всех пользователей кроме текущего..
Спасибо
Удобное отключение/перезагрузка по сети:
net use \\192.168.0.1 «pass» /u:»Домен\Имя» /persistent:yes
shutdown /s /t 60 /f /m \\192.168.0.1
У меня после первой команды выключился компьютер а после синий экран смерти и восстановление виндовс
Экспериментально проверил, что если время указано более 600 секунд, т.е. 10 минут, то появляется маленькое уведомление в трее. Вопрос, кто-нибудь знает, как можно увеличить этот период более 600, чтобы на экран выводилось это синее окошко? Может в планировщике задач что подкрутить или в реестре?
Ну можно вывести надпись и указать там что в такое то время выключиться а после отправить другую команду с нужным количеством времени
Да, можно сделать такую многоходовку, но лично мне такое не нравится. Я нашел решение для себя. У нас используется Kaspersky Security Center, там можно сделать удаленную задачу на перезагрузку компа. Пример, автоматическое надоедливое окно будет появляться у пользователя каждые 5 мин с возможностью отсрочки, и через 30 мин сделает автоматическую перезагрузку. _https://support.kaspersky.com/KSC/14/ru-RU/10304.htm
я так бывшей прописал ребуты регулярные на компе, чтоб в своих симсов не игралась ;D
сам на работе коллегам тоже па приколу такие штуки сделал, веселуха)))))
У меня на win 8 shutdown в планировщике от имени NT AUTHORITY\SYSTEM не запускается. А вот от пользователя , после добавления его в политику «в ход в качестве пакетного задания » запускается.
Как на удаленных компьютерах выполнить аналог shutdown /logoff ?
Вывести список пользователей с сессиями на хосте rds01 :
quser /server:rds01
Получили ID сесии нужного пользователя, например 4.
Завершить его сессию удаленно:
Logoff 4 /server:rds01
В cmd пишет «192.168.50.187: Не удалось подключиться к реестру» Что нужно мне включить ?
Скорее всего службу
remote registry
на удаленной машинеВопросик возник. Есть удалённый компьютер, на нём Anydesk. Так вот, если удаленный компьютер выключить вручную через меню пуск/завершение работы, то можно через окно анидеск его удалённо включить (хз как работает, возможно, что включение по Wake-on-LAN). Но если удалённый компьютер выключить командой shutdown , то удалённое включение его невозможно.
Иными словами у команды shutdown и пункта в меню пуск «Завершение работы» итог разный по состоянию компьютера в выключенном состоянии.
Можно ли какой командой добиться состояния как после пункта в меню пуск «Завершение работы», чтобы после выключения так же можно было включить.
Похоже тут дело в том, что по умолчанию в Windows при выключении через Пуск, компьютер отправляется в гибернацию, а не в полноценное выключение. Это стандартное поведение, когда включена опция Fast Startup в настройках схемы электропитания.
Попробуйте команду:
shutdown /h
— это отправит компьютер в гибернациюДоброго дня. как перезагружаться с открытием после, всех программ и файлов в момент перезагрузки.
Иногда некоторое ПО так делает, когда я перезагружаюсь вручную или через shutdown /r всё закрыто.
и всех это всех вплоть до самых примитивных не сохранённых блокнота или пейнта.
Проверьте, что включен автоматический запуск открытых приложений при перезагрузке и добавьте параметр
/sg
в команду shutdown.exehttps://winitpro.ru/index.php/2024/05/20/avto-perezapusk-otkrytyx-prilozhenij-windows/
«Автоматический запуск открытых приложений» всегда был отключен у меня, но тем не менее как я писал некоторое по выполняет перезагрузку и открытие всех программ » с выключенным параметром». сейчас буду пробовать /sg но это вроде выключение только.
с /g открылся только paint
$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»
}
Этот скрипт не отрабатывает при запуске выдает help по команде shutdown.
Спасибо, поправил код в статье.
заменил строку запуска на
Invoke-Expression "SHUTDOWN.exe /m \\$comp /r /c '$sh_msg' /t $sh_delay"
Здравствуйте, а как удаленно сделать «обновить и перезагрузить»? И в случае если это уже было сделано, то ничего не делать.
команда shutdown не умеет ставить обновления.
А для удаленной проверки и установки обновлений из консоли можно юзать powershell:
https://winitpro.ru/index.php/2018/10/01/pswindowsupdate-upravlenie-obnovleniyami-powershell/
Типа:
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot
спасибо
с помощью параметра /o команды shutdown можно перезагрузиться в режиме восстановления Windows:
shutdown /f /r /o /t 0