Перейти к основному контенту

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

Введение

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

Доступ к командной строке и PowerShell

Способы запуска CMD:

  1. Меню Пуск → ввести "cmd" → выбрать "Командная строка"
    • image.png

  2. Win+R → ввести cmd → Enter
    • image.png

  3. Диспетчер задач → "Файл" → "Запустить новую задачу" → ввести cmd
    • image.png

Способы запуска PowerShell:

  1. Меню Пуск → ввести "PowerShell"
    • image.png

  2. Win+X → выбрать "Windows PowerShell (администратор)"
    • image.png

  3. Win+R → ввести powershell → Enter
    • image.png

Основная утилита SHUTDOWN.EXE

Общая структура команды:

shutdown [параметры] [время] [/c "ваш комментарий"]

image.png

Основные параметры команды 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

image.png

Выход из системы

shutdown /l

Выключение или перезагрузка в определенное время

Расчет в секундах

  • Выключение сегодня в 20:00
  • Рассчитаем секунды до 20:00
  • Предположим, сейчас 18:00, значит до 20:00 = 2 часа = 7200 секунд
shutdown /s /t 7200

image.png

Использование планировщика
  • Создание задачи на 20:00:
schtasks /create /tn "AutoShutdown" /tr "shutdown.exe /s /f /t 0" /sc once /st 20:00 /f

image.png

  • Как проверить, создалась ли задача:
schtasks /query /tn "AutoShutdown"

image.png

  • Как удалить эту задачу:
schtasks /delete /tn "AutoShutdown" /f

image.png

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
}

Запускаем скрипт:

image.png

Видим уведомление:

image.png

Особенности работы с RDS-серверами

При работе с серверами терминалов (RDS) важно уведомлять пользователей о плановых работах:

shutdown /r /f /t 600 /c "Сервер будет перезагружен через 10 минут для установки обновлений. Сохраните вашу работу."

image.png

Для множественных сессий можно использовать PowerShell:

$servers = @("RDS01", "RDS02", "RDS03")

foreach ($server in $servers) {
    shutdown /r /f /t 300 /m \\$server /c "Плановый перезапуск через 5 минут"
}

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

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

shutdown /a

image.png

Проверка, запланировано ли выключение:

# Получаем объект операционной системы
$os = Get-CimInstance -ClassName Win32_OperatingSystem

# Проверяем, запущен ли таймер завершения работы, и отменяем его
shutdown /a 2>$null

if ($LASTEXITCODE -eq 0) {
    Write-Host "Выключение отменено" -ForegroundColor Green
} else {
    Write-Host "Активных задач на выключение не найдено" -ForegroundColor Yellow
}

Если запланировано

image.png

Если нет

image.png

Использование 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 создает диалоговое окно, где вы вводите имя пользователя и пароль для доступа к другому компьютеру.

Создание ярлыков и скриптов для удобства

Создание ярлыка для быстрой перезагрузки:

  1. На рабочем столе щелкните правой кнопкой мыши
  2. Выберите "Создать" → "Ярлык"
    • image.png

  3. В поле расположения введите:
    • shutdown /r /t 60 /c "Перезагрузка через 1 минуту"
    • image.png

  4. Назовите ярлык "Быстрая перезагрузка"

Пакетный файл (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 }
}

image.png

Планировщик задач для регулярных действий

Через графический интерфейс:

  1. Нажмите Win+R, введите taskschd.msc
    • image.png

  2. Нажмите "Создать задачу"
    • image.png

  3. На вкладке "Триггеры" укажите, когда выполнять
    • image.png

  4. На вкладке "Действия" укажите программу: shutdown с аргументами: /r /f /t 0
    • image.png

Через командную строку:

Создание ежедневной задачи на 3:00 ночи

schtasks /create /tn "Ночная перезагрузка" /tr "shutdown /r /f" /sc daily /st 03:00

image.png

Перезагрузка при низкой нагрузке

Это полезно, когда нужно перезагрузить компьютер, но не прерывать текущую работу. Скрипт проверяет, насколько загружен процессор, и выполняет перезагрузку только если компьютер не занят сложными задачами:

# Получаем текущую загрузку процессора
$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

Эта команда открывает окно, где можно:

  • Выбрать компьютеры для выключения
  • Указать тип действия (перезагрузка, выключение)
  • Добавить комментарий
  • Установить задержку
  • Указать причину (для журнала событий)

Полезные советы

  1. Всегда сохраняйте работу перед использованием этих команд
  2. Используйте параметр /t для установки задержки, чтобы успеть сохранить файлы
  3. Параметр /f принудительно закрывает программы, но может привести к потере несохраненных данных
  4. Для отмены всегда можно использовать shutdown /a
  5. Проверяйте права - для некоторых команд нужны права администратора

Заключение

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