Команда завершить сеанс 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

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

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

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, по умолчанию утилита 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 AUTHORITY\SYSTEM"

$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 "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "LocalAccountTokenFilterPolicy" /t REG_DWORD /d 1 /f

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

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

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

$sh_msg = "Ваш компьютер будет автоматически перезагружен через 10 минут. Сохраните свои файлы и закройте запущенные программы"
$sh_delay = 600 # секунд
$computers = gc C:\PS\PC-list.txt
foreach ($comp in $computers)
{
Invoke-Expression "SHUTDOWN.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

on November 25, 2010

We can logoff a user session by clicking on the Logoff button in the start menu. We can logoff from command prompt(CMD) too using shutdown command. You need to run the below command.

shutdown -L

Shutdown is a Windows in-built command. We don’t have to install it separately. Note that we can run this command from windows Run window also. This command works on all windows editions. (XP, Vista, Server 2k3/2k8, Windows 7)

There’s another command Logoff which also serves the same purpose. This command can be used to logoff sessions on the remote computers also. Find syntax below for this.

logoff /server:remote_computer_name

To logoff on the current system

logoff

This does not accept user name and passwords so it uses the credentials of the current logged in user on the host system.

How to force logoff without waiting for user confirmation to terminate the running applications?

The above commands do forced logoffs.  They kill all the applications one by one and at the end logs off the user.

Managing user sessions in a Windows environment is a critical task for system administrators. There are times when you need to terminate a user session, whether for maintenance, troubleshooting, or security reasons. The Windows Command Line provides powerful tools for managing user sessions efficiently. This article will explore how to kill a user session Windows Command Line, ensuring you can maintain control over your network and systems effectively.

Understanding User Sessions in Windows

A user session in Windows is an instance where a user logs into the system and interacts with it. These sessions are tracked and managed by the system, and administrators often need to monitor and control them. Scenarios where you might need to terminate a user session include:

  • Maintenance and Updates: Performing system maintenance or updates that require users to log off.
  • Troubleshooting: Addressing issues where a user’s session may be causing system problems.
  • Security: Terminating sessions that pose a security threat.

Tools for Managing User Sessions

Windows provides several command-line tools to manage user sessions:

  • Task Manager: Provides a graphical interface but can be accessed through the command line.
  • Command Line Tools: query, logoff, and tsadmin are powerful commands for session management.

Using Command Line Tools to Kill User Sessions

1. Query User Command
The query user command allows you to list all user sessions on a local or remote system. This is the first step in identifying the session you want to terminate.

Syntax:

CSS   Copy code
query user [username] [/server:servername]

Example:

graphql   Copy code
query user

This command lists all active user sessions on the local machine, displaying details like session name, user name, ID, and session state.

2. Logoff Command
The logoff command is used to terminate a user session. After identifying the session ID from the query user command, you can use logoff to end the session.

Syntax:

CSS   Copy code
logoff [sessionID] [/server:servername]

Example:

Copy code
logoff 2

This command logs off the session with ID 2 on the local machine. If you need to log off a user on a remote server, you would specify the server name.

3. Taskkill Command
The taskkill command is another powerful tool that can be used to terminate user processes and sessions.

Syntax:

CSS   Copy code
taskkill /ID [pid] /F

Example:

r   Copy code
taskkill /ID 1234 /F

This command forcibly terminates the process with process ID (PID) 1234. To use taskkill for a user session, you need to identify the PID of the user’s processes.

Also read: What Command Launches the Remote Desktop (RDP) Client for Windows?

Step 1: Open Command Prompt
Click Win + R, type cmd, & press Enter to open the Command Prompt.

Step 2: Query User Sessions
Use the query user command to list all user sessions.

graphql   Copy code
query user

Note the session ID of the user session you want to terminate.

Step 3: Logoff User Session
Use the logoff command with the session ID obtained from the previous step.

css   Copy code
logoff [sessionID]

For example:

Copy code
logoff 2

Step 4: Verify Termination
Use the query user command again to verify that the session has been terminated.

graphql   Copy code
query user

Managing Remote Sessions

Query Remote User Sessions
To query user sessions on a remote server, use the query user command with the /server parameter.

bash   Copy code
query user /server:servername

Logoff Remote User Sessions
Similarly, use the logoff command with the /server parameter to log off a user session on a remote server.

bash   Copy code
logoff [sessionID] /server:servername

Example

  1. Query Remote Sessions:
    bash   Copy code
    query user /server:remote_server_name
  2. Logoff Remote Session:
    bash   Copy code
    logoff 3 /server:remote_server_name

Advanced Management with PowerShell

PowerShell offers advanced capabilities for managing user sessions, including more complex scripts and automation.

Example PowerShell Script to Logoff User

powershell   Copy code
$session = (query user /server:remote_server_name | Where-Object { $_ -match 'username' }) -split ' +'
logoff $session[2] /server:remote_server_name

This script identifies the session ID for the specified username on a remote server and logs off the session.

Best Practices for Managing User Sessions

  1. Communication: Always communicate with users before terminating their sessions to avoid data loss and disruption.
  2. Documentation: Keep records of session terminations for auditing and troubleshooting purposes.
  3. Scheduled Maintenance: Schedule regular maintenance windows to minimize the impact on users.

Conclusion

Effectively kill user sessions Windows command line is crucial for maintaining system performance, security, and stability. By leveraging command-line tools like query user, logoff, and task kill, administrators can efficiently terminate user sessions as needed. Whether working on local or remote systems, these commands provide the flexibility and control required for comprehensive session management. Remember to follow best practices and communicate with users to ensure a smooth and efficient process.

Несколько раз встречался с ситуацией, когда один из пользователей Windows Server с ролью RDS (Remote Desktop Services) запустил приложение, которое утекло и заняло всю доступную RAM. Удаленно подключиться к такому хосту по RDP невозможно. Чтобы завершить утекший процесс, нужно выполнить удаленный логофф пользователя. Для этого можно использовать встроенную команду logoff.

Синтаксис команды logoff.exe:

logoff /server:<servername> <session ID> /v

Команда logoff принимает ID сессии пользователя, которую нужно завершить. Чтобы вывести список активных сеансов пользователей на удаленном компьютере, выполните команду:

quser /server:RemoteComputerName

USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
admin console 1 Active none 1/25/2023 1:23 PM

quser - список активных сессий на удаленном компьютере Windows или RDS

В данном случае на компьютере выполнен локальный вход (console) под пользователем admin. ID этой сессии равно 1.

Можно получить ID сессии определенного пользователя:

quser /server:RemoteComputerName sidorov

Совет. Если пользователь подключен через Remote Desktop, в поле SESSIONNAME будет указано rdp-tcp#X.

Вы можете удаленно завершить сеанс пользователя по его ID сессии. Выполните команду:

logoff 1 /SERVER:RemoteComputerName /v

Logging off session ID 1

При завершении сеанса пользователя, будут завершены все его запущенные процессы.

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

quser /server:RemoteComputerName

No User exists for *

Можно использовать небольшой скрипт, чтобы завершить все сеансы пользователей на нескольких терминальных серверах:

@echo off
setlocal
set servers=MSKRDS1 MSKRDS2
for %%s in (%servers%) do (
qwinsta /server:%%s | for /f "tokens=3" %%i in ('findstr /I "%username%"') do logoff /server:%%s %%i /v
)

Также для удаленного завершения сессий пользователей можно использовать встроенную утилиту rwinsta:

rwinsta rdp-tcp#12 /server:MSKRDS2

или

rwinsta 22 /server:MSKRDS2

rwinsta - сбросить удаленную сессию пользователя

There are multiple ways to log off the current user on a Windows system using the command line.  The version of the commands below will depend on the Windows version, the interface you are using to log off the user (e.g. Remote Command Prompt, RMM, Local Command Prompt) etc..

The command to force the current user to log off  immediately using the command line in Windows is:

shutdown /l /f /t 00

Sometimes you will need to use a “-” instead of a “/”

shutdown -l -f -t 00

If you’d like to log off the session giving the current user the chance to save any work you would just exclude the “/f”

shutdown /l

or

shutdown -l

On some remote management systems you can’t issue the shutdown command.  In these cases what you need to do is find out the current user’s active session number by issuing the following command:

query user

Query User

You will then be able to see the current user’s Id and issue the logoff command instead:

logoff 1

Where 1 is the ID of the user you are logging off after performing the query user command.

The following command has been tested on Windows XP, Windows 7, Windows 8, Windows 8.1, Windows 10.  Your mileage may vary on other version of windows.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Rsync клиент для windows
  • Драйвер долби атмос для windows 10
  • Not seeing a new build windows 11
  • Разблокируйте возможности microsoft windows 11 как пропустить
  • Как убрать все ошибки в windows 10