Powershell как выключить компьютер

Обновлено: 04.05.2024

Чтобы вернуть компьютер в исходное состояние в PowerShell, используйте стандартную программу командной строки, инструментарий WMI или класс CIM. Хотя PowerShell используется только для запуска программы, сведения об изменении состояния электропитания для компьютера в PowerShell иллюстрируют некоторые важные особенности работы с внешними средствами в PowerShell.

Блокировка компьютера

Единственным способом непосредственной блокировки компьютера с помощью стандартных средств является вызов функции LockWorkstation() в user32.dll:

Эта команда немедленно блокирует рабочую станцию. Она использует rundll32.exe, который запускает библиотеки DLL Windows (и сохраняет их библиотеки для многократного использования), чтобы запустить user32.dll — библиотеку функций управления Windows.

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

Чтобы завершить работу конкретных сеансов на сервере терминалов, используйте программу командной строки tsshutdn.exe.

Выход из текущего сеанса

Выйти из сеанса в локальной системе можно несколькими способами. Самый простой заключается в использовании программы командной строки удаленного рабочего стола или служб терминалов — logoff.exe (для получения дополнительных сведений введите logoff /? в командной строке PowerShell). Чтобы выйти из текущего активного сеанса, введите logoff без аргументов.

Можно также использовать средство shutdown.exe с параметром выхода:

Еще один вариант — использование инструментария WMI. Класс Win32_OperatingSystem имеет метод Shutdown. Вызов метода с флагом 0 инициирует выход из системы:

Дополнительные сведения о методе Shutdown класса Win32_OperatingSystem см. в этой статье.

Завершение работы или перезапуск компьютера

Завершение работы и перезапуск компьютеров обычно относятся к схожим типам задач. Средства, завершающие работу компьютера, обычно также перезапускают его и наоборот. Есть два варианта непосредственной перезагрузки компьютера из PowerShell. Используйте tsshutdn.exe или shutdown.exe с соответствующими аргументами. Подробные сведения об использовании можно получить, запустив tsshutdn.exe /? или shutdown.exe /? .

Операции завершения работы и перезапуска можно также выполнять непосредственно из PowerShell.

Чтобы завершить работу компьютера, используйте команду Stop-Computer.

Чтобы перезапустить операционную систему, используйте команду Restart-Computer.

Чтобы выполнить немедленную перезагрузку компьютера, используйте параметр -Force.

Зачем использовать CMD и PowerShell для выключения компьютера

Логично, что большинство людей всегда для завершения работы за компьютером будут использовать графические окна и мышку, это правильно, так как это проще и быстрее, но бывает ряд случаев, что вы как продвинутый пользователь или тем более системный администратор, просто обязаны уметь выполнять все задачи без GUI интерфейса. Вот вам примерный список ситуаций:

  • Вам как системному администратору может выпасть честь работать с Windows Server Core, которая не имеет графического интерфейса и если вам вдруг нужно завершить работу такого сервера или виртуальной машины для обслуживания, вы обязаны это уметь.
  • Вторая ситуация может возникнуть, на компьютерах, где политиками или иными методами была выключена возможность завершать работу компьютера. Вот вам пример, что есть только пункт "Выход".

Отсутствует кнопка завершение работы

  • Третья ситуация, это различные сценарии, подразумевающие использование скриптом, например массово выключить компьютеры по списку, полет фантазии тут огромный.
  • Так же не нужно забывать про удаленное выключение систем, PowerShell, как и был призван одним из основных инструментов по удаленному управлению Windows, но командная строка так же позволяет это выполнить.

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

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

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

справка команды shutdown

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

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

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

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

Всплывающее окно при выполнении команды shutdown

Теперь давайте поиграемся с таймером, у вас может быть желание немедленного завершения работы или наоборот вы хотите задать время превышающее стандартную минуту, тут нам поможет ключ /t, в там случае команда будет выглядеть так:

При t = 0 у меня будет произведено моментальное выключение компьютера, если же я например задам 180, что равносильно трем минутам, то вы увидите вот такое окно:

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

Если у вас время в ключе /f задано более 0, то вы можете столкнуться с ситуацией, что какие-то приложения могут не дать завершить работу системы и выключить компьютер. В таких сценариях вы можете принудительно их завершать, для этого есть ключ /f:

Или вы вообще можете захотеть, выключить компьютер через 2 часа. это в секундах 7200. Так же есть отдельный ключ, который сразу завершает работу вашей системы, без ввода времени, этот ключ /p. В итоге можно выключить компьютер командой

команда shutdown с комментарием

Если вы хотите задать комментарий при выключении компьютера из командной строки и задать причину, то есть ключи /c и /d. Ключ /c задает комментарий, который не может быть длиннее, чем 512 символов. Ключ /d указывает причину, тут может быть совместный ключ "p", означающий запланированное завершение или же ключ "u", означающий что причину указывает пользователь.

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

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

Событие 1074 после выключения компьютера через командную строку

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

CMD может легко взаимодействовать и с удаленными системами, давайте я покажу, как вы можете завершить работу Windows у двух удаленных компьютеров, у меня это будет система с Windows 10 под именем W10-cl02. Для этого мы используем ключ "m".

Тут я принудительно завершаю работу удаленного компьютера W10-cl02. Так же вы можете произвести удаленное выключение компьютера и из графического интерфейса, для этого есть ключ -i. Вводим команду:

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

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

Нажимаем кнопку "Добавить" и вводим нужные вам сервера и рабочие станции которые вы планируете выключить.

Добавление компьютеров для выключения

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

Предупредить пользователей об этом действии

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

предупредительное окно при выключении компьютера через cmd

Как видите утилита командной строки shutdown.exe даже в нынешнее время Windows 10, является отличным инструментом, умеющим выключать компьютер с Windows по нужному сценарию. дополнительную информацию про утилиту shutdown вы можете посмотреть по ссылке:

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

Теперь давайте обратимся к более современному инструменту, а именно к оболочке PowerShell. Открываем ее в режиме администратора, нас будет интересовать командлет Stop-Computer. Если вы его просто введете в оболочке на локальном компьютере, то у вас начнется завершение работы.

Удаленное выключение компьютера из PowerShell

Теперь давайте посмотрим справку по данному командлету, для этого введите

Справка Stop-Computer

Как видим командлет имеет много дополнительных ключей.

Удаленное выключение компьютера из PowerShell

Командлет Stop-Computer имеет ключ -ComputerName через который можно указать список систем, требующих завершения работы. У меня есть два удаленных компьютера с Windows 10, w10-cl02 и w10-cl03. Давайте их выключим, вводим команду:

Если на текущий момент на удаленных компьютерах. кто-то работает, то вы получите ошибку:


Stop-Computer : Не удается выполнить команду на конечном компьютере ("w10-cl02") из-за следующей ошибки: Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями.
строка:1 знак:1
+ Stop-Computer -ComputerName w10-cl02, w10-cl03
+

Stop-Computer : Не удается выполнить команду на конечном компьютере ("w10-cl03") из-за следующей ошибки: Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями.
строка:1 знак:1
+ Stop-Computer -ComputerName w10-cl02, w10-cl03
+

Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями

Чтобы это обойти вы можете добавить ключик -Force, который сделает принудительное выключение

Форсированное выключение компьютера через powershell

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

Stop-Computer -ComputerName w10-cl02, w10-cl03 -Credential root\sem -Force(Где root, это наименование домена, а sem, это логин пользователя)

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

выключил два компьютера и все можно сделать и без использования мышки

Также командлет Stop-Computer имеет ключ -WsmanAuthentication, который позволяет производить подключения по разным протоколам аутентификации. Возможные варианты:

Напоминаю, что по умолчанию используется CredSSP .но я в моем примере буду использовать Kerberos, так как привык работать со службой удаленного управления Windows (WinRM).

[info]Stop-Computer -ComputerName w10-cl02, w10-cl03 -Force -WsmanAuthentication Kerberos[/info]

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

Может возникнуть ситуация, что вы или ваши коллеги могут подготовить тестовый файл со списком компьютеров, которые потребуется выключить. Stop-Computer легко справится с этой задачей. Кладу на диск C:\ файл computers.txt, после чего выполняю команды.

$s = Get-Content -Path C:\computers.txt
$c = Get-Credential root\sem
Stop-Computer -ComputerName $s -Force -Credential $c

Скрипт выключения компьютера через powershell

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

И так, как выключить компьютер через определенное время, так как у вас легко может возникнуть такой сценарий. Для решения вопроса со временем есть командлет Start-Sleep.

Start-Sleep -Seconds 60; Stop-Computer -ComputerName w10-cl02, w10-cl03 -Force

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

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

$s = Get-Content -Path C:\computers.txt
$c = Get-Credential root\sem
Start-Sleep -Seconds 60; Stop-Computer -ComputerName $s -Force -Credential $c

Удаленное выключение компьютера из PowerShell

Дополнительную информацию, по командлету Stop-Computer я вам советую поискать на сайте Microsoft

Как выключить компьютер через WMI запрос

Так же используя командную строку или оболочку PowerShell вы можете выполнить команду с использованием WMI, чтобы завершить работу компьютера. Для этого введите команду:

[info](Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Win32Shutdown(1)[/info]

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

(Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Win32Shutdown(5)

Как выключить компьютер через WMI запрос

Создание ярлыка выключения компьютера

Если вы хотите вынести себе функцию выключения вашего компьютера в виде отдельного файла-ярлыка, вы можете это легко реализовать. Щелкаете правой кнопкой мыши по рабочему столу и выбираем пункт "Создать - Ярлык"

Создание ярлыка выключения компьютера

Задаем параметры для нашего ярлыка, тут вы вводите нужную вам команду, в моем случае, это команда, которая немедленно выключает компьютер.

Всё о PowerShell в Windows и на Linux. Системное администрирование Windows

Командлет Stop-Computer

Командлет Stop-Computer выключает локальный или удалённый компьютер.

Вы можете запускать Stop-Computer с дополнительными опциями, чтобы указать уровни аутентификации и альтернативные учётные данные, а также для принудительного немедленного завершения работы.

Этот командлет использует метод Win32Shutdown класса Win32_OperatingSystem WMI.

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

Следующий пример выключит компьютер с именем Win-Server-Core, имеющим пользователя Administrator с правами, достаточными для выключения компьютера:

Эта команда выключает удалённые компьютеры и локальный компьютер.

В предыдущей команде Stop-Computer использует опцию -ComputerName для указания двух удалённых компьютеров и локального компьютера. Каждый из перечисленных компьютеров будет выключен.

Следующий код выключает удалённые компьютеры в качестве фонового задания:

В предыдущем примере Stop-Computer использует опцию -ComputerName для указания двух удалённых компьютеров. Фоновый оператор «&» переводит команду как фоновое задание. Объекты задания хранятся в переменной «$j».

Объекты задания в переменной $j отправляются по конвейеру в Receive-Job, который получает результаты задания. Объекты хранятся в переменной $results. Переменная $results отображает информацию о задании в консоли PowerShell.

Выключение удалённого компьютера:

В предыдущем примере Stop-Computer использует опцию -ComputerName для указания удалённого компьютера. Опция -WsmanAuthentication указывает использование Kerberos для установки удалённого подключения.

Выключение компьютера в домене:

В предыдущем примере Get-Content использует опцию -Path для чтобы прочитать содержимое файла Domain01.txt в текущем каталоге со списком компьютеров домена. Объекты хранятся в переменной $s.

Затем Get-Credential использует опцию -Credential для указания учётных данных администратора домена. Учётные данные хранятся в переменной $c.

Наконец Stop-Computer выключает компьютеры, указанные в списке компьютеров в опции -ComputerName в переменной $s. Опция -Force вызывает немедленное отключение. Опция -Credential передаёт свои учётные данные, сохранённые в переменной $c.

Ошибка «Невозможно инициировать завершение работы системы, так как компьютер используется другими пользователями»

может завершиться ошибкой:


Её причина в том, что пользователи выполнили вход на компьютере и используют его.

Для принудительного выключения укажите опцию -Force:


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

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

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

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

Вы можете добавить в команду опцию /f, которая означает принудительное закрытие запущенных приложений без предупреждения пользователей. Подразумевается использование параметра /f, если для параметра /t задано значение больше 0.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

You May Also Like

Узнать uptime в скрипте или bat файле

Проверка компьютера с отправкой смс

Проверить, запущен ли CMD файл или WSH скрипт

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

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% минут!
)

Читайте также: