Windows завершить сеанс через командную строку

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

В Windows доступно несколько команд, которые позволяют выключить или перезагрузить локальный или удаленный компьютер. В этой статье мы рассмотрим, как использовать команду shutdown и PowerShell командлеты Restart-Computer и Stop-Computer для выключения/перезагрузки Windows.

Содержание:

  • Использование команды shutdown в Windows
  • Перезагрузка удаленных компьютеров командой shutdown
  • Перезагрузка и выключение Windows с помощью PowerShell

Использование команды shutdown в Windows

Утилита командной строки shutdown является встроенной командой Windows, которая позволяет перезагрузить, выключить компьютер, перевести его в спящий режим или завершить сеанс пользователя. В этой инструкции мы покажем основные примеры использования команды shutdown в Windows (все рассмотренные команды запускаются в окне Выполнить — Win+R ->, в командной строке cmd.exe или в консоли PowerShell).

Команда shutdown имеет следующий синтаксис:

shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f] [/m \компьютер][/t xxx][/d [p|u]xx:yy [/c "комментарий"]]

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

Как вы видите, у команды довольно много опций, а также есть возможность выключить/ перезагрузить удаленный компьютере.

Выключение Windows командой Shutdown

Для выключения ОС Windows и компьютера необходимо использовать команду shutdown с ключом /s.

shutdown /s

Перезагрузка Windows

Чтобы перезагрузить компьютер, необходимо добавить параметр /r. После выполнения этой команды Windows корректно перезагрузится.

shutdown /r

shutdown /r - перезагрузка компьютера

Завершение сеанса пользователя

Чтобы завершить текущую сессию пользователя (logout), нужно выполнить команду:

shutdown /l

shutdown /l завершение сенаса пользоватеоя

Эта команда аналогично выполнению команды logoff.

Перевод компьютера в режим гибернации

Для перевода компьютер в режим гибернации (в этом режиме все содержимое памяти записывается в файл hyberfil.sys на диск и компьютер переходит в спящий режим с пониженным электропотреблением), выполните команду:

shutdown /h

Перезагрузка компьютера с сообщением пользователям

Вы можете предупредить всех пользователей Windows о предстоящем выключении / перезагрузки компьютера или сервера, отправив сообщение во все активные сессии (как правило эта возможность используется на терминальных RDS серверах, за которыми одновременно работают несколько пользователей, каждый в своей собственной RDP сессии).

shutdown /r /c “Этот сервер будет перезагружен через 60 секунд.”

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

Можно выключить или перезагрузить компьютер с определенной задержкой (по таймеру). С помощью опции /t можно указать интервал времени (в секундах), через который ПК/сервер будет перезагружен или выключен. Тем самым вы можете предоставить пользователям дополнительное время для того, чтобы успеть сохранить открытые файлы и корректно закрыть приложения. Эту опцию удобно использовать совместно с отправкой сообщения. В этом примере мы указываем, что Windows будет выключена через 10 минут (600 секунд) и информируем пользователей сообщением.

shutdown /s /t 600 /c "Сервер будет выключен через 10 минут. Сохраните свои документы!"

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

shutdown - Ваш сеанс будет завершен.

Если задержка очень длительная, например, 100 минут (6000 секунд), то вместо предупреждающего окна появляется всплывающее сообщение в нижнем правом углу экрана: «Ваш сеанс будет завершен. Работа Windows будет завершена через 100 мин».

Работа Windows будет завершена через 100 мин

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

После запуска команды выключения или перезагрузки Windows, по умолчанию утилита shutdown ожидает 60 секунд, не выполняя никаких действия. Администратор может отменить перезагрузку или выключение устройства, если в течении этого времени успеет выполнить команду:

shutdown /a

После отмены выключения появится всплывающее сообщение в нижнем правом углу экрана: «Выход из системы отменен. Запланировано завершение работы отменено».

shutdown /a - отмена перезагрузки Выход из системы отменен

Перезагрузить Windows немедленно

Чтобы выключить или перезагрузить компьютер немедленно, не ожидая стандартные 60 секунд, нужно указать значение 0 для параметра /t. Например, для немедленной перезагрузки компьютера:

shutdown /r /t 0

Очень важный ключ /f. Я использую его практически всегда при выключении или перезагрузки серверов Windows. Данный атрибут обеспечивает принудительное завершение всех запущенных программ и процессов, не ожидая подтверждения от пользователя (не будем же мы ждать подтверждения закрытия программ от всех пользователей на терминальном сервере, его можно просто не дождаться).

Следующая команда выполнит перезагрузку компьютера с автоматическим запуском всех зарегистрированных приложений после перезагрузки (имеются в виду приложения, зарегистрированные в системе с использованием функции API RegisterApplicationRestart).

shutdown /g

Ярлык для перезагрузки компьютера

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

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

Перезагрузка Windows в определенное время

Чтобы всегда перезагружать/выключать компьютер или сервер в определенное время, вы можете добавить команду shutdown в планировщик заданий Windows taskschd.msc.

Например, следующее задание планировщика будет ежедневно перезагружать компьютер ночью в 0:00.

задание планировщика для ежедневной перезагрузки компьютера командой shutdown

Либо вы можете создать новое задание планировщика из PowerShell:

$Trigger= New-ScheduledTaskTrigger -At 00:00am -Daily
$User= "NT AUTHORITYSYSTEM"

$Action= New-ScheduledTaskAction -Execute "shutdown.exe" -Argument "–f –r –t 120"
Register-ScheduledTask -TaskName "RebootEvertyNight_PS" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force

Перезагрузка удаленных компьютеров командой shutdown

Вы можете перезагрузить удаленный компьютер по сети, для этого у вас должен быть к нему сетевой доступ, а учетная запись, из-под которой запускается команда shutdown должна входить в группу локальных администраторов на удаленном компьютере (сервере):

shutdown /r /t 120 /m \192.168.1.100

shutdown /r //m - перезагрузка удаленного компьютера

Если все указанные условия выполняются, но при выполнении команды shutdown появляется ошибка ”Отказано в доступе (5)”, на удаленном компьютере нужно разрешить удаленный доступ к административным ресурсам (C$, ADMIN$), изменив значение параметра LocalAccountTokenFilterPolicy на 1.

reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" /v "LocalAccountTokenFilterPolicy" /t REG_DWORD /d 1 /f

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

net use \192.168.31.10 /u:corpusername
shutdown /s /t 60 /f /m \192.168.31.10

Если вам необходимо удаленно перезагрузить множество компьютеров, их список можно сохранить в текстовый файл и запустить удаленную перезагрузку всех компьютеров с помощью такого PowerShell скрипта:

$sh_msg = "Ваш компьютер будет автоматически перезагружен через 10 минут. Сохраните свои файлы и закройте запущенные программы"
$sh_delay = 600 # секунд
$computers = gc C:PSPC-list.txt
foreach ($comp in $computers)
{
& 'C:WindowsSystem32SHUTDOWN.exe' "-m \$comp -r -c $sh_msg -t $sh_delay"
}

Графический интерфейс команды shutdown

Для тех, кому не комфортно работать в командной строке, есть графический интерфейс для команды shutdown, чтобы его вызвать, наберите:

shutdown /i

shutdown /i - графический интерфейс команды shutdown

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

Перезагрузка и выключение Windows с помощью PowerShell

В PowerShell есть две команды для выключения и перезагрузки компьютера: Restart-Computer и Stop-Computer. Обе команды позволяют выключить или перезагрузить локальный или удаленный компьютер по сети.

powershell команда Restart-Computer

Для перезагрузки Windows выполните:

Restart-Computer -force

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

Stop-Computer

По умолчанию перезагрузка начнется через 5 секунд. Можно увеличить задержку перед перезагрузкой:

Restart-Computer –delay 15

У обоих командлетов есть параметр
–ComputerName
, который позволяет задать список удаленных компьютеров.

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

Stop-Computer -ComputerName "Server01", "Server02"

Можно указать учетные данные администратора для подключения к удаленному хосту:

$Creds = Get-Credential
Restart-Computer -ComputerName $Names -Credential $Creds

Для подключения к удаленным компьютерам используется WMI и DCOM (он должны быть включен и настроен). Если WMI не настроен, при запуске команды появится ошибка:

Restart-Computer : Failed to restart the computer wks-t1122h2 with the following error message: 
Access is denied.
Exception from HRESULT: 0x80070005 (E_ACCESSDENIED).

restart-computer ошибка при удаленной перезагрузке компьютера по сети 0x80070005

Если на удаленном компьютере настроен WinRM (Windows Remote Management), вы можете использовать для подключения WSman вместо WMI:

Restart-Computer -ComputerName wks-t1122h2 -Protocol WSMan

Если на удаленном компьютер есть активные сессии пользователей, при запуске Restart-Computer появится ошибка:

Restart-Computer : Failed to restart the computer wks-t1122h2 with the following error message:
The system shutdown cannot be initiated because there are other users logged on to the computer.

Restart-Computer на удаленном компьютере есть активный пользователь

Для принудительной перезагрузки нужно добавить параметр -Force:

Restart-Computer -ComputerName wks-t1122h2 –Force

С помощью параметра -For можно перезагрузить компьютер и дождаться, когда он будет доступен. Например, вы хотите убедиться, что удаленный компьютер успешно перезагрузится и на нем стартовала служба WinRM, позволяющая подключиться к нему через WS-Management:

Restart-Computer -ComputerName wks-t1122h2 -Wait -For WinRM

Restarting computer wks-t1122h2
Verifying that the computer has been restarted.

Удаленная перезагрузка компьютера из powershell

Можно дождаться запуска службы удаленного рабочего стола (RDP) или любой другой службы Windows:

Restart-Computer -ComputerName wks-t1122h2 -Wait -For TermService

Если нужно одновременно перезагрузить несколько хостов, можно использовать возможности параллельного запуска команд в версии PowerShell 7.x.

Например, вы можете получим список Windows Server в определенном контейнере (Organizational Unit) Active Directory с помощью командлета Get-ADComputer и перезагрузить их одновременно:

$Computers = (Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -SearchBase "OU=Servers,DC=winitpro,DC=loc").Name
$Computers | ForEach-Object -Parallel {    Restart-Computer -ComputerName $_ -Force} -ThrottleLimit 3

Logoff WindowsКоманда LOGOFF используется для завершения сеанса пользователей в Windows при помощи командной строки.

Синтаксис команды LOGOFF:

LOGOFF [имя_сеанса | ID_сеанса] [/SERVER:сервер] [/V] [/VM]

Имя сеанса — имя сеанса пользователя;

ID сеанса — идентификатор сеанса пользователя;

/SERVER — имя или IP-адрес хоста. Если не указан, то сеанс завершается на текущем компьютере;

/V — отображение информации о выполненных действиях;

/VM — завершение сеанса на сервере или в виртуальной машине. Необходимо указать уникальный идентификатор сеанса.

Имя или идентификатор сеанса пользователя можно посмотреть при помощи команды QUSER.

Посмотрим на примеры использования команды LOGOFF.

Завершить текущий сеанс пользователя на локальной машине:

logoff

Завершить сеанс с именем rdp-tcp#1 на компьютере PC-1:

logoff rdp-tcp#1 /server:pc-1

Завершить сеанс с идентификатором 1 на компьютере PC-1 с отображением информации о выполняемых действиях:

logoff 1 /server:pc-1 /v

В качестве альтернативы команде LOGOFF можно использовать команду SHUTDOWN с ключом /l (или -l).

Выход пользователя через командлет stop-terminalsession

Данный командлет устанавливается отдельно, совместно с пакетом Pscx. Первым делом посмотрим локально или удаленно идентификаторы сессии пользователя, для которого мы хотим сделать log off. Выполняем команду:

Get-TerminalSession -ComputerName имя сервера

Нужный мне ID сеанса 427. Далее воспользуемся командлетом Stop-TerminalSession, чтобы выкинуть пользователя и завершить его сессию.

Stop-TerminalSession -ComputerName имя сервера -Id 427 -Force

Как видите сессия 427 больше не существует, и у нас с помощью командлета Stop-TerminalSession получилось выкинуть пользователя из RDS сеанса. На этом у меня все. Остались вопросы, то пишите их в комментариях. С вами был Иван Семин, автор и создатель IT портала msconfig.ru.

Выход пользователя через командлет stop-tssession

Есть такой замечательный командлет Stop-TSSession. Посмотрим на сервере ID и имя сеанса, для этого в открытой оболочке PowerShell введите:

Get-TSSession | FT

В итоге я вижу, что у пользователя barboskin.g SessionID 3. Далее пишем

Stop-TSSession 3 или принудительно Stop-TSSession 3 -Force

Два способа принудительного завершения сеанса из командной строки

В редакцию регулярно поступают письма с вопросом, как организовать автоматическое завершение сеанса из командной строки. До последнего времени стандартного решения этой проблемы не было, но с выходом четвертой версии Microsoft Windows NT Server 4.0 Resource Kit ситуация изменилась. В Resource Kit версии 4 появилось две утилиты для выполнения этой задачи: исполняемый модуль logoff.exe и сценарий VBScript – logoff.vbs, причем сценарий обеспечивает даже более широкие функциональные возможности.

В редакцию регулярно поступают письма с вопросом, как организовать автоматическое завершение сеанса из командной строки. До последнего времени стандартного решения этой проблемы не было, но с выходом четвертой версии Microsoft Windows NT Server 4.0 Resource Kit ситуация изменилась. В Resource Kit версии 4 появилось две утилиты для выполнения этой задачи: исполняемый модуль logoff.exe и сценарий VBScript – logoff.vbs, причем сценарий обеспечивает даже более широкие функциональные возможности.

Для выполнения logoff.exe из пакетного файла используется синтаксис:

logoff [/n] [/f]

При запуске программы без параметров logoff переспрашивает, действительно ли нужно завершить сеанс. Если ответить «y» (yes), то Windows NT закрывает текущий сеанс, если, конечно, в это время нет приложений с несохраненными данными. Если хотя бы одно такое приложение в работе, оно может приостановить закрытие сеанса и переспросить о необходимости сохранения данных. Естественно, программа, требующая вмешательства пользователя, не очень подходит для автоматического выполнения пакетных заданий, поэтому авторы программы предусмотрели ключи /n и /f.

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

Основное достоинство logoff.exe заключается в том, что это очень компактный исполняемый файл, не требующий наличия дополнительных средств. Реализованный в том же Resource Kit вариант утилиты в виде сценария VBScript позволяет завершить текущий сеанс пользователя не только на локальном, но и на удаленном компьютере. Обе программы можно найти в каталоге Resource Kit. Следует отметить, что если, находясь в этом каталоге, ввести в командной строке команду logoff, то будет выполнена программа logoff.exe, поскольку операционная система в первую очередь ищет исполняемые программы, и лишь затем пытается выполнить сценарии. Для выполнения сценария необходимо полностью указать в командной строке имя файла сценария VBScript, то есть logoff.vbs.

Поскольку сценарий logoff.vbs использует для работы интерфейс WBEM (Web-Based Enterprise Management, интерфейс обслуживания корпоративных систем на основе Web). Конечно же, для завершения сеансов на удаленном компьютере на нем тоже должен быть установлен интерфейс WBEM. Этот интерфейс стандартно установлен на всех системах Windows 2000, а для использования на компьютерах Windows NT интерфейс WBEM можно загрузить с сервера Microsoft, или найти необходимые установочные файлы в Resource Kit. Для выполнения сценария logoff.vbs используется синтаксис:

logoff.vbs /s  /u  /w  /f

Ключ /s используется для выполнения сценария на сервере servername, причем в этом случае следует задать имя администратора и пароль с ключами /u и /w, соответственно. Аналогично, для принудительного завершения сеанса можно задать ключ /f, а вот ключ /n не используется, так как сценарий никогда не переспрашивает, действительно ли следует завершить сеанс.

Предположим, что на сервере uptown пользователь BigGuy с паролем stingray имеет права администратора, тогда для принудительного завершения сеанса работающего на этом компьютере пользователя достаточно выполнить на другом компьютере команду

logoff.vbs /s uptown /u bigguy /w stingray /f

Сразу оговоримся, что записывать в пакетном файле имя и пароль администратора просто недопустимо, поэтому удаленное использование сценария logoff.vbs несколько ограничено (прим. переводчика: можно написать программу, которая запускает такую команду для списка компьютеров, запрашивая при запуске имя и пароль). Но в любом случае возможность изучить исходный код сценария удаленного отключения пользователя позволит применить эту технику в случае необходимости. Как мы видим, корпорация Microsoft определенно собирается присоединиться к движению за свободу исходного кода программ.

Марк Минаси

– редактор Windows NT Magazine, имеет сертификат MCSE; является автором книги «Mastering Windows NT Server 4.0» (издательство Sybex). С ним можно связаться по адресу:

mark@minasi.com.

Использование утилиты rwinsta

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

В моем примере имя сеанса rdp-tcp#172 и ее ID 515. Пишем команду:

rwinsta rdp-tcp#172 /server:localhost или rwinsta 515 /server:localhost

Как отключить пользователя через reset session

Завершить сессию пользователя можно и с помощью утилиты командной строки Reset Session. В текущем примере у моего Барбоскина Геннадия Викторовича имя сеанса rdp-tcp#16 с его ID 11. Данную утилиту можно применять как локально на самом терминальном сервере, так и на своей рабочей станции, тут так же есть ключ /server.

reset session rdp-tcp#16 или reset session 11

Методы завершения сессии пользователя не терминале

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

  • Чтобы выйти из текущего сеанса, введите: logoff
  • Чтобы выйти из сеанса с кодом ID 12, введите: logoff 12
  • Чтобы выйти из сеанса с использованием имени сеанса и сервера, например сеанс TERM04 на сервере WF12, введите: logoff TERM04 /server:WF12
  • Команда терминального сервера Query process Команда терминального сервера Query process отображает.

«>Query process — сведения о процессах на сервере — 02/06/2021 04:02Команда Mstsc — подключение по RDP Команда терминального сервера Mstsc используется для создания подключений.

«>Mstsc — подключение к удаленному рабочему столу Windows — 31/05/2021 16:03Команда Msg Команда MSG используется для отправки сообщения пользователям операционной системы.

  • Команда терминального сервера Cprofile Команда терминального сервера Cprofile используется для.

Расшифровка значений

код_сеанса

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

название_сеанса

Выдает название конкретного сеанса.

/server:название_сервера

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

Будут выдаваться сведения о реализуемых мероприятиях.

Команда терминального сервера Logoff используется для выхода пользователя из сеанса и удаления сеанса с сервера.

А для включенияотключения входа в терминальные сеансы применяется команда Change logon.

Синтаксис

logoff [<код_сеанса|название_сеанса>] [/server:название_сервера] [/v]

Синтаксис logoff

logoff [<код_сеанса|имя_сеанса>] [/server:имя_сервера] [/v]

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

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

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

Ниже в таблице представлены основные команды:

Команда Описание
shutdown /s /t 0 выключить питание компьютера
shutdown /r /t 0 перезагрузка компьютера
shutdown /h перевести компьютер в режим гибернации
shutdown /s /hybrid /t 0 гибридное выключение, при следующей загрузке
будет использована быстрая загрузка
shutdown /l завершить сеанс текущего пользователя

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

Примеры использования команды SHUTDOWN

shutdown /s /t 0 выключить питание компьютера немедленно.

shutdown /r /t 0 перезагрузить компьютер.

shutdown /h перевести компьютер в режим гибернации.

При выполнении команды, вся информация из оперативной памяти (процессы, программы, данные) сохраняются в специальном файле hyberfil.sys, находящемся в корневом каталоге системного диска и выполняется обычное выключение питания.

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

Режим перевода в гибернацию должен быть включен для данного компьютера, например командой powercfg /h on или с помощью оснастки Электропитание панели управления Windows.

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

shutdown /s /hybrid /t 0 гибридное выключение, при следующей загрузке будет использована быстрая загрузка.

Параметр /hybrid выполняет завершение работы компьютера и подготавливает его к быстрому запуску необходимо использовать с параметром /s.

shutdown /l завершить сеанс текущего пользователя. Команда завершения сеанса может быть выполнена только на локальном компьютере и только для текущего пользователя. Аналогично выполнению команды logoff без параметров.

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

shutdown /s /t 60

shutdown /s выключить питание компьютера через 30 секунд. По умолчанию, перезагрузка выполнится через 30 секунд, если не задан параметр /t

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

Если задержка очень длительная, например 60 минут (3600 секунд), то вместо предупреждающего окна появляется всплывающее сообщение в нижнем правом углу экрана.

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

shutdown /a

После отмены выключения появится всплывающее сообщение в нижнем правом углу экрана.

shutdown /r /m \\192.168.0.10 выполнить перезагрузку компьютера с IP-адресом 192.168.0.10.

shutdown /s /t 60 /m \\COMP1 выключить питание компьютера COMP1 через 60 секунд.

shutdown /s /t 60 /m \\192.168.0.10 выключить питание компьютера с IP-адресом 192.168.0.10 через 60 секунд.

shutdown /g выполнить перезагрузку с восстановлением выполнения приложений, зарегистрированных с использованием функции API RegisterApplicationRestart. Обычно используется при обновлении системы, когда в процессе установки необходима перезагрузка с продолжением процесса инсталляции.

shutdown /i запуск графической среды утилиты shutdown.exe. На экран выводится Диалог удаленного завершения работы.

В окне «Диалог удаленного завершения работы» для выполнения операции выключения, перезагрузки или завершения сеанса пользователя, нужно ввести имя или IP-адрес компьютера с использованием кнопки Добавить, выбрать желаемое действие, причину и заполнить поле Примечание, текст из которого будет отображаться в информационном сообщении о запланированном действии.

Для большинства причин, поле Примечание является обязательным, и если его не заполнить, то кнопка OK будет неактивной.

Если в командной строке не заданы параметры, или задан параметр /? — то на экран выдается краткая справка по использованию команды.

Вместо синтаксиса /ключ допускается использование -ключ.

Команда shutdown может принимать следующие параметры:

  • /i — тображение графического интерфейса пользователя. Этот параметр должен быть первым.
  • /l— завершение сеанса. Этот параметр нельзя использовать с параметрами /m или /d.
  • /s — завершение работы компьютера.
  • /r — полное завершение работы и перезагрузка компьютера.
  • /g — полное завершение работы и перезагрузка компьютера. Запуск всех зарегистрированных приложений после перезагрузки системы.
  • /a— отмена завершения работы системы. Этот параметр можно использовать только в период ожидания.
  • /p — выключение локального компьютера без задержки или предупреждения. Можно использовать с параметрами /d и /f.
  • /h — перевод локального компьютера в режим гибернации. Можно использовать с параметром /f.
  • /hybrid — выполняет завершение работы компьютера и подготавливает его к быстрому запуску. Необходимо использовать с параметром /s.
  • /e — указание причины непредвиденного завершения работы компьютера.
  • /o —переход в меню дополнительных параметров загрузки и перезагрузка компьютера. Необходимо использовать с параметром /r.
  • /m \\компьютер —указание конечного компьютера.
  • /t xxx — указание времени ожидания в xxx секунд до завершения работы компьютера. Допустимый диапазон: 0-315360000 (10 лет); значение по умолчанию: 30. Если задержка больше 0, подразумевается использование параметра /f.
  • /c «комментарий» — комментарий с причиной перезагрузки или завершения работы. Длина не должна превышать 512 знаков.
  • /f — принудительное закрытие запущенных приложений без предупреждения пользователей. Подразумевается использование параметра /f, если для параметра /t задано значение больше 0.

/d [p|u:]xx:yy

Причина перезагрузки или завершения работы:

  • p означает запланированную перезагрузку или завершение работы.
  • u означает, что причина определяется пользователем.
  • xx — номер основной причины (целое положительное число меньше 256).
  • yy — номер дополнительной причины (целое положительное число меньше 65536).

Если не задано ни «p», ни «u», перезагрузка и завершение работы не планируются.

Logoff — выход пользователя из системы

Команда терминального сервера Logoff используется для выхода пользователя из сеанса и удаления сеанса с сервера.

А для включенияотключения входа в терминальные сеансы применяется команда Change logon.

Синтаксис Logoff

logoff [{код_сеанса|имя_сеанса}] [/server:имя_сервера] [/v]

Параметры Logoff

код_сеанса — Отображает числовое значение кода (ID), которое определяет сеанс на сервере.
имя_сеанса — Отображает имя сеанса.
/serverимя_сервера — Указывает сервер терминалов, содержащий завершаемый пользовательский сеанс. Если сервер терминалов не задан, то по умолчанию выбирается текущий.
/v — Отображает сведения о выполненных действиях.
/? — Отображение справки в командной строке.
 
Примечания по команде Logoff
  • Пользователь всегда может выйти из сеанса, в который он вошел. Однако, для того чтобы отключить пользователей от других сеансов, необходимо иметь разрешения на «Полный доступ».
  • Необходимо знать, что выход пользователя из системы и завершение сеанса без предупреждения может привести к потере данных сеанса. Чтобы предупредить пользователя о завершении его сеанса, необходимо отправить ему сообщение, используя команду msg.
  • Если не заданы ни код сеанса, ни его имя, то использование команды logoff приведет к выходу из текущего сеанса. Если задано имя сеанса, то он должен быть активным.
  • При выходе пользователя из системы все процессы завершаются и сеанс удаляется с сервера.
  • Выход пользователя из системы из сеанса консоли невозможен.

Примеры Logoff

  • Чтобы выйти из текущего сеанса, введите: logoff
  • Чтобы выйти из сеанса с кодом ID 12, введите: logoff 12
  • Чтобы выйти из сеанса с использованием имени сеанса и сервера, например сеанс TERM04 на сервере WF12, введите: logoff TERM04 /server:WF12

Обновлено 16.04.2019

User logoДобрый день! Уважаемые читатели и гости IT портала Pyatilistnik.org. Вчера я вас научил определять номер и ID сеанса пользователя на RDS ферме или терминальном сервере. Там я вам рассказывал, что это нужно в случаях, когда вам необходимо завершить сессию пользователя, по ряду причин, одна из таких, это просто ее зависание. После чего человек и подключиться не может заново и не может выйти из своего сеанса. Вы как администратор, должны уметь решать проблему с зависшими RDP сессиями, ниже я покажу свои методы и алгоритмы.

Описание проблемы

Есть RDS ферма из 15 хостов подключений на Windows Server 2012 R2. Сервера на то они и сервера, что работают постоянно. Если у вас на ферме не настроены тайм ауты времени беспрерывной работы, то пользователи могут неделями или месяцами висеть в авторизованных подключениях. Логично предположить, что это не очень хорошо и ведет к различным последствиям, одно из которых, это полное зависание сеанса, при котором человек не может подключиться к терминальному серверу и видит сообщение «Работает служба профилей пользователей» или еще вариант «Не удается завершить требуемую операцию», я уже не говорю про повреждение пользовательского профиля. В результате того, что RDS брокеры видят. что пользователь уже залогинен, они не дают ему переподключиться к другому Session Host серверу, даже если вы закроете на текущем новые подключения. Пока вы не сделаете выход пользователя из системы для этой сессии, она так и будет мешать. Давайте разбираться, как это делать.

Методы завершения сессии пользователя не терминале

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

  • Завершить сессию пользователя (Сделать log off) вы можете из оснастки управления RDS фермой
  • Разлогинить пользователя можно и на самом терминальном сервере из диспетчера задач
  • Выход пользователя можно выполнить из утилиты командной строки rwinsta
  • Утилита командной строки log off
  •  Утилита reset session
  • * Командлет Stop-TSSession

Как выкинуть пользователя из оснастки управления RDS

И так, у меня есть мой любимый, тестовый пользователь в Active Directory, по имени Барбоскин Геннадий Викторович. Предположим, что он зашел на терминальный стол и нам по причине зависания его сессии, нужно сделать ему выход. Первый метод, это использование оснастки по управлению RDS фермой, я вам рассказывал, как ее собирать. Открываем раздел с вашей коллекцией RDS фермы. В поисковом фильтре указываем логин или фамилию нужного сотрудника. В результате получаем хост, где он работает.

выход пользователя

Щелкаем по нему правым кликом. В контекстном меню будет пункт «Выйти», это и соответствует завершению сессии (Log off). Так же есть пункт «Отключиться», если выберите его, то пользователь будет выброшен с терминального сервера, но его сессия останется на нем, данная операция равносильна тому, если пользователь просто нажал в окне с названием терминального сервера крестик.

как выкинуть пользователя-03

После того, как вы выбрали пункт «Выйти», начнется корректное завершение сессии пользователя на RDS ферме. Сам пользователь увидит сообщение «Работает служба профилей пользователей» и у него закроется окно без ошибки.

Второй метод разлогинить пользователя на терминальном сервере

Второй метод, похож на первый, за исключением того, что нам необходимо залогиниться на нужный сервер, открыть оснастку «Диспетчер задач» и уже из него произвести выход пользователя. Сказано сделано, о том, как вам попадать на нужного участника RDS фермы я рассказывал. Далее щелкаем правым кликом по области пуска и из контекстного меню выбираем пункт «Диспетчер задач». Кстати, вызвать «Диспетчер задач» можно и через сочетание клавиш CTRL+SHIFT+ESC.

как выкинуть пользователя-04

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

Выход пользователя в диспетчере задач

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

Использование утилиты RWINSTA

Если вы попали в ситуацию, когда графические методы не позволяют вам произвести выход пользователя из системы, а это необходимо, то вам на помощь придут утилиты из командной строки. RWINSTA — это встроенная в Windows утилита, которая позволяет сбрасывать сессии, по ID и имени сеанса. Первым делом вам нужно вычислить или ID сессии или ее имя, я вам рассказывал, о всех известных мне методах. можете ознакомиться. Я выберу утилиту qwinsta. Пишем команду:

qwinsta | findstr barboskin.g (Локально)

или удаленно qwinsta /server:имя сервера | findstr barboskin.g

В моем примере имя сеанса rdp-tcp#172 и ее ID 515. Пишем команду:

rwinsta rdp-tcp#172 /server:localhost или rwinsta 515 /server:localhost

Использование утилиты RWINSTA

И в первом и во втором случае, пользователь будет разлогинен с данного сервера. Данную команду можно запускать удаленно, со своего рабочего места, главное, чтобы были права на log off. Данный метод меня ни раз выручал в моей практике, например случай с зависшей сессией на Windows Server 2016, где вместо логина пользователя было имя (4).

Как отключить пользователя через reset session

Завершить сессию пользователя можно и с помощью утилиты командной строки Reset Session. В текущем примере у моего Барбоскина Геннадия Викторовича имя сеанса rdp-tcp#16 с его ID 11. Данную утилиту можно применять как локально на самом терминальном сервере, так и на своей рабочей станции, тут так же есть ключ /server.

reset session rdp-tcp#16 или reset session 11

Как отключить пользователя через reset session

Подробнее про утилиту reset session вы можете почитать на сайте Microsoft — https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/reset-session

Как отключить пользователя через logoff

Разлогинить пользовательскую учетную запись и даже зависшую, можно и через утилиту командной строки «LogOff». В данном примере у Геннадия Барбоскина имя сессии rdp-tcp#43. В командной строке от имени администратора введите:

logoff rdp-tcp#43 /server:localhost (Имя сервера можно менять) или logoff 54 /server:localhost

Как отключить пользователя через logoff

Выход пользователя через командлет Stop-TSSession

Есть такой замечательный командлет Stop-TSSession. Посмотрим на сервере ID и имя сеанса, для этого в открытой оболочке PowerShell введите:

В итоге я вижу, что у пользователя barboskin.g SessionID 3. Далее пишем

Stop-TSSession 3 или принудительно Stop-TSSession 3 -Force

Выход пользователя через командлет Stop-TSSession

Соглашаемся с тем, что будет производиться log off для данного пользователя. Проверяем, что сессия завершена. Можно вот таким простеньким скриптом из планировщика задач, разлогинивать сессии:

Import-Module PSTerminalServices
Get-TSSession -ComputerName SERVER_NAME -filter {$_.sessionID -ne 0 -AND $_.sessionID -ne 1 -AND $_.sessionID -ne 65536}| Stop-TSSession –Force

Выход пользователя через командлет Stop-TerminalSession

Данный командлет устанавливается отдельно, совместно с пакетом Pscx. Первым делом посмотрим локально или удаленно идентификаторы сессии пользователя, для которого мы хотим сделать log off. Выполняем команду:

Get-TerminalSession -ComputerName имя сервера

Get-TerminalSession

Нужный мне ID сеанса 427. Далее воспользуемся командлетом Stop-TerminalSession, чтобы выкинуть пользователя и завершить его сессию.

Stop-TerminalSession -ComputerName имя сервера -Id 427 -Force

Stop-TerminalSession

Как видите сессия 427 больше не существует, и у нас с помощью командлета Stop-TerminalSession получилось выкинуть пользователя из RDS сеанса. На этом у меня все. Остались вопросы, то пишите их в комментариях. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.

Понравилась статья? Поделить с друзьями:
  • Windows завершит работу через 1 минуту
  • Windows завершение сеанса сразу после входа
  • Windows завершает применение параметров очень долго
  • Windows как отформатировать диск через консоль
  • Windows завершает применение параметров долго при установке windows 7