Статья описывает, как выключить или перезагрузить компьютер на Windows из командной строки: PowerShell, JScript/VBScript с WSH, nhss, shutdown. А также дополнительно, как сделать выключение или перезагрузку с задержкой.

Выключить или перезагрузить компьютер из PowerShell

Выключить компьютер можно командной Stop-Computer из консоли PowerShell:

PS C:\> Stop-Computer

Перезагрузить компьютер можно командой Restart-Computer из консоли PowerShell:

PS C:\> Restart-Computer

Как это выглядит в консоли PowerShell:

Поскольку PowerShell сейчас устанавливается на Windows по умолчанию, то использование PS команды не требует дополнительных установок.

Чтобы выполнить выключение или перезагрузку через PowerShell из bat файла или из командной строки, их надо вызывать через powershell.

Например, команда перезагрузки локального компьютера в bat файле или командной строке:

powershell "restart-computer"

Аналогично, команда выключения локального компьютера в bat файле или командной строке:

powershell "stop-computer"

Выключить или перезагрузить компьютер из JScript/VBScript через WSH

Способ основан на использовании метода Win32Shutdown класса Win32_OperatingSystem:

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

var wmi = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\\\.\\root \\cimv2");
var col_os = wmi.ExecQuery("Select * from Win32_OperatingSystem");
for(var i = new Enumerator(col_os); !i.atEnd(); i.moveNext())
  i.item().Win32Shutdown(1);

Перезагрузить компьютер можно следующим скриптом на JScript:

var wmi = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\\\.\\root\\cimv2");
var col_os = wmi.ExecQuery("Select * from Win32_OperatingSystem");
for(var i = new Enumerator(col_os); !i.atEnd(); i.moveNext())
  i.item().Win32Shutdown(2);

Пример на VBScript, с forced restart (добавляется 4):

Dim WMIServiceObject, ComputerObject AsObject 

WMIServiceObject = GetObject(
"Winmgmts:{impersonationLevel=impersonate,(Debug,Shutdown)}")
ForEach ComputerObject In WMIServiceObject.InstancesOf("Win32_OperatingSystem") 
    ComputerObject.Win32Shutdown(2 + 4, 0)

Поскольку WSH сейчас установлен по умолчанию на Windows, то использование JScript/VBScript не требует установки каких-либо программных компонентов.

Выключить или перезагрузить компьютер программой nhss

Программа nhss предназначена для управления питанием компьютера и позволяет выполнять такие команды, как выключение, перезагрузка, ждущий режим, спящий режим.

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

nhss -sd

Перезагрузить компьютер можно следующей командой:

nhss -r

Команды просты в использовании, но потребуется установить программу nhss.exe и прописать путь к ней.

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

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

shutdown

Перезагрузить компьютер можно следующей командой:

shutdown -r

Важно! Команда shutdown делает «грубое» завершение Windows, которое на практике приводило к тому, что не сохранялись настройки, сделанных в Windows в текущем сеансе. Поэтому хотя и выключение/перезагрузка компьютера через shutdown действительно срабатывает, я бы не рекомендовал использование shutdown для обычного завершения, а только для экстренных случаев, когда требуется максимально быстро завершить Windows, например, в случае Low Battery на ИБП.

Как выключить компьютер по таймеру

Чтобы настроить выключение компьютера через определенное время, например, через 1 час, это можно сделать выполнением команды выключения с задержкой, см. Сделать задержку в командном файле:

ping 127.0.0.1 -n 3600 > nul && nhss -sd

Или через PowerShell с задержкой в 30 минут:

ping 127.0.0.1 -n 1800 > nul && powershell "stop-computer"

Выключение или перезагрузка компьютера из bat файла
Метки:             

2 мыслей о “Выключение или перезагрузка компьютера из bat файла

  • 02.11.2019 в 20:06
    Постоянная ссылка

    echo off
    chcp 1251
    cls
    :x
    cls
    set /p any="Завершение работы- 1, перезагрузка- 2, отключение таймера- 0. Выберите действие: "
    cls
    set j=%any%
    if %j% == 3 (
    msg * Такого значения не существует!!!
    echo Такого значения не существует!!!
    ping -n 2 127.0.0.1 > NUL
    cls
    goto x
    ) else (
    cls
    )
    if %j% == 4 (
    msg * Такого значения не существует!!!
    echo Такого значения не существует!!!
    ping -n 2 127.0.0.1 > NUL
    cls
    goto x
    ) else (
    cls
    )
    if %j% == 5 (
    msg * Такого значения не существует!!!
    echo Такого значения не существует!!!
    ping -n 2 127.0.0.1 > NUL
    cls
    goto x
    ) else (
    cls
    )
    if %j% == 5 (
    msg * Такого значения не существует!!!
    echo Такого значения не существует!!!
    ping -n 2 127.0.0.1 > NUL
    cls
    goto x
    ) else (
    cls
    )
    if %j% == 6 (
    msg * Такого значения не существует!!!
    echo Такого значения не существует!!!
    ping -n 2 127.0.0.1 > NUL
    cls
    goto x
    ) else (
    cls
    )
    if %j% == 7 (
    msg * Такого значения не существует!!!
    echo Такого значения не существует!!!
    ping -n 2 127.0.0.1 > NUL
    cls
    goto x
    ) else (
    cls
    )
    if %j% == 8 (
    msg * Такого значения не существует!!!
    echo Такого значения не существует!!!
    ping -n 2 127.0.0.1 > NUL
    cls
    goto x
    ) else (
    cls
    )
    if %j% == 9 (
    msg * Такого значения не существует!!!
    echo Такого значения не существует!!!
    ping -n 2 127.0.0.1 > NUL
    cls
    goto x
    ) else (
    cls
    )
    if %j% == 0 (
    shutdown /a
    msg * Таймер был отключён!
    cls
    exit
    ) else (
    cls
    )
    if %any% == 1 (
    echo Вы выбрали- завершение работы
    ping -n 2 127.0.0.1 > NUL
    cls
    ) else (
    echo Вы выбрали- перезагрузку
    ping -n 2 127.0.0.1 > NUL
    cls
    )
    if %any% == 1 (
    set /p sec="Введите время до завершения работы (в минутах): "
    ) else (
    set /p sec="Введите время до перезагрузки (в минутах): "
    )
    set /a min=%sec%*60
    cls
    if %any% == 1 (
    shutdown /s /t %min%
    msg * Компьютер выключится через %sec% минут!
    ) else (
    shutdown /r /t %min%
    msg * Компьютер перезагрузится через %sec% минут!
    )

    Кодировка ANSI
    Вот довольно простой и функцианальный батник

    Ответ
    • 19.12.2022 в 13:42
      Постоянная ссылка

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

      Ответ

Добавить комментарий для Денис Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *