Logoff, shutdown и reboot с помощью wmi и powershell
Для того, чтобы выключить, перезагрузить компьютер или завершить сеанс пользователя, в PowerShell можно воспользоваться методами WMI-класса Win32_OperatingSystem.
Для начала выведем список методов класса:
Get-WmiObject Win32_OperatingSystem | Get-Member -MemberType Method
Если вам надо просто перезагрузить или выключить компьютер, то подойдут методы Reboot и Shutdown соответственно. К примеру, для перезагрузки надо выполнить такую команду:
(Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Shutdown()
Обратите внимание на ключ EnableAllPrivileges. Повышение привилегий необходимо для данной операции, без него команда завершится с ошибкой.
Следующий метод 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)
Ну и самый продвинутый метод Win32ShutdownTracker, который имеет четыре параметра — задержку (Timeout), комментарий (Comment), код причины (ReasonCode) и действие (Flags). Действия указываются аналогично предыдущему методу. Коды причины можно посмотреть здесь, хотя если особой необходимости в них нет, можно просто поставить 0. Для примера принудительно завершим работу системы, укажем таймаут 60 секунд и добавим комментарий:
(Get-WmiObject Win32_OperatingSystem -EnableAllPrivileges).Win32ShutdownTracker(60,"Force shutdown",0,5)
Примечание. Для операций LogOff, независимо от указанной задержки выход из системы происходит незамедлительно. Добавить комментарий также невозможно.
Как в ms windows server завершить сессии пользователей в терминале в определенное время
Объекты: Справочник, Документ, ПланОбмена, ПВХ, Бизнес-процесс, Задача, ПланСчетов, ПВР.
Мультиобработчик:
-Проведение, перенумерация, движения, копирование, создание на основании, подчиненность, статистика, удаление документов.
-Регистрация изменений объекта(ов) в планах обмена.
-Установка/Отключение ГлавногоУзла РИБ.
-Поиск и восстановление “Битых” ссылок.
-Недопустимые символы XML/Дерево XML.
-Поиск и замена ссылок.
-Ошибки ИБ, в т.ч XML.
-Множество обработок справочников.
-GUID. Дата и время создания объектов ссылочного типа.
-Аналитика предопределенных, блокируемых реквизитов, ХранилищаЗначений.
-История изменений объекта.
-Активные пользователи.
-Подписки на события, функциональные опции.
-Загрузка пользователей ИБ из Windows, Active Directory.
-Выгрузка/Загрузка пользователей ИБ в/из внешний XML-файл.
-Поддержка различных режимов модальности.
Файловый, Клиент-Серверный варианты.
Обычная и Управляемая формы.
1 стартмани
28.12.2021
174798
8861
StepByStep
422
Как сделать logoff забывчивых пользователей с терминального сервера в нужное время?
Долго думал каким таким простым образом можно сделать массовый logoff пользователей с терминального сервера после рабочего времени, при этом некоторых пользователей (к примеру себя) с терминала не выгонять?!
Первое, что взбрело в голову, сделать групповую политику которая все за тебя сделает, покапался в настройках – такая штуковина существует, но она умеет выгонять только по таймеру, т.е. через промежуток времени (1,2 и т.д. часа), а не в указанное время.
Это не всегда подходит т.к. персонал начинает работать не всегда в одно и тоже время, да и может кто то работать больше чем 8-9 часов в день.
Долго бился с этой задачей, пока снова не спасла (всесильная) командная строка и несколько строк кода скрипта.