Shutdown, Reboot и LogOff при помощи WMI и PowerShell

Автор Itworkroom

В статье показано, как выполнить выключение (Shutdown), перезагрузку  (Reboot) и выходи из сеанса (LogOff) при помощи Инструментария управления Windows (WMI) (WMI) — это подсистема PowerShell, которая обеспечивает администраторам доступ к мощным инструментам системного мониторинга.) и PowerShell.

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

Для начала выведем список методов класса:

Get-WmiObject Win32_OperatingSystem | Get-Member -MemberType Method

Shutdown и Reboot WMI

Если вам надо просто перезагрузить или выключить компьютер, то подойдут методы Reboot и Shutdown соответственно. К примеру, для перезагрузки надо выполнить такую команду:

(Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Shutdown()

Shutdown и Reboot WMI

 

Обратите внимание на ключ EnableAllPrivileges. Повышение привилегий необходимо для данной операции, без него команда завершится с ошибкой.

Shutdown и Reboot WMI

 

Следующий метод Win32Shutdown в качестве аргумента принимает параметр (Flags), с помощью которого можно выбрать необходимое действие. Параметр представляет из себя битовую маску и может принимать следующие значения:

Log Off (0) — выход из системы. Останавливает все процессы, связанные с контекстом безопасности текущего пользователя, завершает его сеанс  и отображает диалоговое окно входа в систему.

Forced Log Off (4) — принудительный выход из системы. Выход производится незамедлительно, не дожидаясь завершения процессов пользователя. Это может привести к некорректному завершению работы программ и потере данных.

Shutdown (1) — завершение работы. Завершает работу системы и выключает питание компьютера. При этом все запущенные процессы останавливаются, а содержимое памяти сохраняется на диск. Во время завершения работы система обращается к каждому запущенному приложению и ждет от него подтверждения того, что его можно безопасно завершить.

Forced Shutdown (5) — принудительное завершение работы. Завершает работу системы и выключает питание компьютера. При принудительном завершении работы все запущенные программы и службы, включая WMI, отключаются незамедлительно. Из-за этого может произойти потеря данных, а при запуске на удаленном компьютере вы не сможете увидеть результат выполнения команды.

Reboot (2) — перезагрузка. Завершение работы и перезагрузка компьютера.

Forced Reboot (6) — принудительная перезагрузка. При использовании метода принудительной перезагрузки все запущенные программы и службы незамедлительно завершаются, из за чего может произойти потеря данных.

Power Off (8) — выключение. Завершение работы системы и выключение питания компьютера (если это поддерживается).

Forced Power Off (12) — принудительное выключение. Завершение работы системы и выключение питания компьютера. При принудительном выключении все запущенные программы и службы незамедлительно завершаются, из за чего может произойти потеря данных.

К примеру команда для завершения сеанса пользователя (logoff) будет выглядеть так:

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

Shutdown и Reboot WMI

 

Ну и самый продвинутый метод Win32ShutdownTracker, который имеет четыре параметра — задержку (Timeout), комментарий (Comment), код причины (ReasonCode) и действие (Flags). Действия указываются аналогично предыдущему методу. Коды причины можно посмотреть здесь, хотя если особой необходимости в них нет, можно просто поставить 0. Для примера принудительно завершим работу системы, укажем таймаут 60 секунд и добавим комментарий:

(Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Win32ShutdownTracker(60,"Force shutdown",0,5)

Shutdown и Reboot WMI

 

Примечание. Для операций LogOff, независимо от указанной задержки выход из системы происходит незамедлительно. Добавить комментарий также невозможно.

Добавить комментарий

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