Управление выключением и перезагрузкой Windows через командную строку
Введение
Управление выключением и перезагрузкой компьютера через командную строку — полезный навык, который позволяет автоматизировать эти процессы, устанавливать точное время перезагрузки и управлять компьютером без использования графического интерфейса. Этот метод особенно полезен, когда нужно запланировать задачи на определенное время или управлять несколькими компьютерами.
Доступ к командной строке и PowerShell
Способы запуска CMD:
- Меню Пуск → ввести "cmd" → выбрать "Командная строка"
- Win+R → ввести cmd → Enter
- Диспетчер задач → "Файл" → "Запустить новую задачу" → ввести cmd
Способы запуска PowerShell:
- Меню Пуск → ввести "PowerShell"
- Win+X → выбрать "Windows PowerShell (администратор)"
- Win+R → ввести powershell → Enter
Основная утилита SHUTDOWN.EXE
Общая структура команды:
shutdown [параметры] [время] [/c "ваш комментарий"]
Основные параметры команды shutdown:
| Параметр | Что делает | Пример |
| /s | Выключает компьютер | shutdown /s |
| /r | Перезагружает компьютер | shutdown /r |
| /l | Выходит из текущей учетной записи | shutdown /l |
| /h | Переводит компьютер в режим гибернации | shutdown /h |
| /a | Отменяет запланированное выключение | shutdown /a |
| /t N | Устанавливает задержку в N секунд | shutdown /s /t 60 |
| /f | Закрывает все программы без предупреждения | shutdown /r /f |
| /c "текст" | Показывает сообщение пользователям | shutdown /s /c "Обновление системы" |
| /m \ИмяПК | Управляет другим компьютером в сети | shutdown /s /m \\КомпьютерМаши |
Практические примеры использования
Простые команды:
Немедленное выключение
shutdown /s /f /t 0
Перезагрузка через 30 секунд
shutdown /r /t 30
Выход из системы
shutdown /l
Выключение или перезагрузка в определенное время
Расчет в секундах
- Выключение сегодня в 20:00
- Рассчитаем секунды до 20:00
- Предположим, сейчас 18:00, значит до 20:00 = 2 часа = 7200 секунд
shutdown /s /t 7200
Использование планировщика
- Создание задачи на 20:00:
schtasks /create /tn "AutoShutdown" /tr "shutdown.exe /s /f /t 0" /sc once /st 20:00 /f
- Как проверить, создалась ли задача:
schtasks /query /tn "AutoShutdown"
- Как удалить эту задачу:
schtasks /delete /tn "AutoShutdown" /f
PowerShell с расчетом времени выключения в 20:00
# Укажите желаемое время выключения
$timeString = "20:00"
$targetTime = Get-Date $timeString
$currentTime = Get-Date
# Если 20:00 уже прошло, прибавляем 1 день
if ($targetTime -le $currentTime) {
$targetTime = $targetTime.AddDays(1)
}
$seconds = [math]::Round(($targetTime - $currentTime).TotalSeconds)
if ($seconds -gt 0) {
shutdown /s /t $seconds
Write-Host "Компьютер выключится в $($targetTime.ToString('HH:mm:ss')) (через $seconds сек.)" -ForegroundColor Cyan
}
Запускаем скрипт:
Видим уведомление:
Особенности работы с RDS-серверами
При работе с серверами терминалов (RDS) важно уведомлять пользователей о плановых работах:
shutdown /r /f /t 600 /c "Сервер будет перезагружен через 10 минут для установки обновлений. Сохраните вашу работу."
Для множественных сессий можно использовать PowerShell:
$servers = @("RDS01", "RDS02", "RDS03")
foreach ($server in $servers) {
shutdown /r /f /t 300 /m \\$server /c "Плановый перезапуск через 5 минут"
}
Отмена запланированного выключения
Если вы передумали или нужно отменить выключение:
shutdown /a
Проверка, запланировано ли выключение:
# Получаем объект операционной системы
$os = Get-CimInstance -ClassName Win32_OperatingSystem
# Проверяем, запущен ли таймер завершения работы, и отменяем его
shutdown /a 2>$null
if ($LASTEXITCODE -eq 0) {
Write-Host "Выключение отменено" -ForegroundColor Green
} else {
Write-Host "Активных задач на выключение не найдено" -ForegroundColor Yellow
}
Если запланировано
Если нет
Использование PowerShell для управления
Команда Restart-Computer:
Простая перезагрузка
Restart-Computer
Перезагрузка с принудительным закрытием программ
Restart-Computer -Force
Команда Stop-Computer:
Выключение компьютера
Stop-Computer -Force
Управление удаленными компьютерами:
Перезагрузка другого компьютера в сети
Restart-Computer -ComputerName "КомпьютерКоллеги" -Force
Использование учетных данных
Команда запросит ввести имя пользователя и пароль
$cred = Get-Credential
Restart-Computer -ComputerName "УдаленныйПК" -Credential $cred -Force
Работа с несколькими компьютерами
$computers = @("ПК1", "ПК2", "ПК3")
foreach ($pc in $computers) {
Restart-Computer -ComputerName $pc -Force
}
Примечание: Переменная $cred = Get-Credential создает диалоговое окно, где вы вводите имя пользователя и пароль для доступа к другому компьютеру.
Создание ярлыков и скриптов для удобства
Создание ярлыка для быстрой перезагрузки:
- На рабочем столе щелкните правой кнопкой мыши
- Выберите "Создать" → "Ярлык"
- В поле расположения введите:
- Назовите ярлык "Быстрая перезагрузка"
Пакетный файл (BAT) для выключения:
Создайте файл Выключение.bat с содержимым:
@echo off
echo Запланировано выключение компьютера через 5 минут
shutdown /s /t 300 /c "Автоматическое выключение"
pause
PowerShell скрипт для управления:
Создайте файл switch.ps1:
# Выбор действия
Write-Host "1 - Выключить компьютер"
Write-Host "2 - Перезагрузить компьютер"
Write-Host "3 - Отменить выключение"
$choice = Read-Host "Выберите действие (1-3)"
switch ($choice) {
"1" {
$time = Read-Host "Через сколько секунд? (0 для немедленно)"
shutdown /s /t $time
}
"2" {
$time = Read-Host "Через сколько секунд? (0 для немедленно)"
shutdown /r /t $time
}
"3" { shutdown /a }
}
Планировщик задач для регулярных действий
Через графический интерфейс:
- Нажмите Win+R, введите taskschd.msc
- Нажмите "Создать задачу"
- На вкладке "Триггеры" укажите, когда выполнять
- На вкладке "Действия" укажите программу: shutdown с аргументами: /r /f /t 0
Через командную строку:
Создание ежедневной задачи на 3:00 ночи
schtasks /create /tn "Ночная перезагрузка" /tr "shutdown /r /f" /sc daily /st 03:00
Перезагрузка при низкой нагрузке
Это полезно, когда нужно перезагрузить компьютер, но не прерывать текущую работу. Скрипт проверяет, насколько загружен процессор, и выполняет перезагрузку только если компьютер не занят сложными задачами:
# Получаем текущую загрузку процессора
$cpuLoad = Get-Counter '\Processor(_Total)\% Processor Time' |
Select-Object -ExpandProperty CounterSamples |
Select-Object -ExpandProperty CookedValue
Write-Host "Текущая загрузка процессора: $cpuLoad%"
# Если загрузка меньше 10%, выполняем перезагрузку
if ($cpuLoad -lt 10) {
Write-Host "Загрузка низкая, выполняем перезагрузку..."
shutdown /r /t 60 /c "Автоматическая перезагрузка при низкой нагрузке"
} else {
Write-Host "Компьютер занят, перезагрузка отложена" -ForegroundColor Yellow
}
Зачем это нужно:
- Компьютер не перезагрузится во время важной работы
- Автоматическая перезагрузка происходит в "тихие" моменты
- Полезно для серверов или компьютеров, которые должны работать постоянно
Графический интерфейс для команды shutdown
Для любителей графического интерфейса есть удобная опция:
shutdown /i
Эта команда открывает окно, где можно:
- Выбрать компьютеры для выключения
- Указать тип действия (перезагрузка, выключение)
- Добавить комментарий
- Установить задержку
- Указать причину (для журнала событий)
Полезные советы
- Всегда сохраняйте работу перед использованием этих команд
- Используйте параметр /t для установки задержки, чтобы успеть сохранить файлы
- Параметр /f принудительно закрывает программы, но может привести к потере несохраненных данных
- Для отмены всегда можно использовать shutdown /a
- Проверяйте права - для некоторых команд нужны права администратора
Заключение
Управление выключением и перезагрузкой через командную строку открывает множество возможностей для автоматизации рутинных задач. Вы можете запланировать перезагрузку на ночное время, настроить автоматическое выключение после завершения работы или создать удобные ярлыки для быстрых действий.




























