QUERY опрашивает состояние активных сеансов пользователей и запущенных процессов на локальной или удалённой машине Windows. Команда незаменима при администрировании терминальных серверов (RDS/Remote Desktop Services): позволяет увидеть, кто подключён, в каком состоянии сеанс и какие процессы в нём выполняются.
- Синтаксис команды QUERY
- Ключи и параметры
- Примеры использования
- Просмотр активных сеансов на локальном компьютере
- Просмотр сеансов на удалённом сервере
- Просмотр процессов во всех сеансах
- Найти конкретный процесс по имени
- Список пользователей с активными сеансами
- Поиск терминальных серверов в сети
- Получить сеансы конкретного пользователя на удалённом сервере
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- В чём разница между QUERY SESSION и QUERY USER?
- Как принудительно завершить сеанс, найденный через QUERY?
- Работает ли QUERY на обычной Windows 10 (не сервер)?
- Как узнать, в каком сеансе запущен конкретный процесс?
- Можно ли использовать QUERY для мониторинга в скрипте?
- Что означает статус Disc в выводе QUERY SESSION?
Синтаксис команды QUERY
QUERY {SESSION | PROCESS | TERMSERVER | USER} [параметры] [/SERVER:сервер] Подкоманды:
SESSION— список активных сеансов RDP/консолиPROCESS— список процессов в сеансахTERMSERVER— список терминальных серверов в сетиUSER— список пользователей с активными сеансами
Плейсхолдер сервер — имя или IP удалённого компьютера; без этого ключа команда работает с локальным хостом.
Ключи и параметры
| Ключ | Описание | Пример |
|---|---|---|
SESSION | Показать сеансы пользователей: ID, имя, статус, тип подключения | QUERY SESSION |
PROCESS | Показать процессы в сеансах: PID, имя процесса, ID сеанса | QUERY PROCESS |
USER | Показать пользователей с активными сеансами | QUERY USER |
TERMSERVER | Найти терминальные серверы в сети | QUERY TERMSERVER |
/SERVER:имя | Выполнить запрос к удалённому серверу | QUERY SESSION /SERVER:rdserver01 |
/ID:id_сеанса | Фильтровать вывод по конкретному ID сеанса | QUERY SESSION /ID:2 |
/MODE | Показать параметры режима для сеанса | QUERY SESSION /MODE |
/? | Справка по подкоманде | QUERY SESSION /? |
Примеры использования
Просмотр активных сеансов на локальном компьютере
Показывает все сеансы: консольный и RDP, их ID, состояние (Active/Disc) и имена пользователей.
QUERY SESSION
В выводе столбец STATE показывает Active (активен), Disc (отключён, но не завершён) или Listen (ожидает подключений).
Просмотр сеансов на удалённом сервере
Используется для мониторинга RDS-сервера без подключения к нему через Remote Desktop.
QUERY SESSION /SERVER:rdserver01
Команда выведет сеансы на сервере rdserver01; нужны права администратора на удалённой машине.
Просмотр процессов во всех сеансах
Позволяет увидеть, какие процессы запущены в каждом пользовательском сеансе — удобно при расследовании утечки ресурсов.
QUERY PROCESS *
Звёздочка означает «все процессы во всех сеансах». Без аргумента выводятся только процессы текущего сеанса.
Найти конкретный процесс по имени
Проверить, запущен ли notepad.exe в каком-либо сеансе:
QUERY PROCESS notepad.exe
Если процесс найден, вывод покажет ID сеанса и PID — полезно перед отправкой сообщения пользователю через MSG.
Список пользователей с активными сеансами
Аналог QUERY SESSION, но фокусируется на именах пользователей:
QUERY USER
Вывод содержит имя пользователя, имя сеанса, ID, состояние и время простоя.
Поиск терминальных серверов в сети
Сканирует сеть в поисках серверов с ролью Remote Desktop Services:
QUERY TERMSERVER /DOMAIN:corp.local
Результат — список имён серверов RDS в указанном домене.
Получить сеансы конкретного пользователя на удалённом сервере
QUERY SESSION ivanov /SERVER:rdserver01
Показывает только сеансы пользователя ivanov на указанном сервере.
Частые ошибки и решения
| Ошибка / симптом | Причина | Решение |
|---|---|---|
| «Отказано в доступе» | Команда требует прав администратора для просмотра сеансов других пользователей | Запустить CMD от имени администратора |
| «QUERY не является внутренней командой» | На рабочей станции без роли RDS некоторые подкоманды могут отсутствовать | Использовать полный путь C:\Windows\System32\query.exe; убедиться, что компонент Remote Desktop установлен |
| «Ошибка при подключении к серверу» при использовании /SERVER | Нет сетевого доступа или firewall блокирует порт 3389/445 | Проверить связь через ping; открыть нужные порты или запустить команду с соответствующими правами |
| Пустой вывод QUERY SESSION | Служба Remote Desktop Services не запущена | Проверить состояние службы: sc query TermService; запустить при необходимости |
| QUERY TERMSERVER не находит серверы | Широковещательный поиск может не работать в сегментированных сетях | Указать домен явно через /DOMAIN или использовать /SERVER:имя для точечного обращения |
Когда применять, а когда нет
QUERY применяется при администрировании Windows Server с ролью Remote Desktop Services или многопользовательских сред. На обычных рабочих станциях Windows 10/11 QUERY SESSION показывает только консольный сеанс текущего пользователя, поэтому её практическая ценность там ограничена. Команда требует прав локального администратора для просмотра чужих сеансов. В PowerShell аналогом служит Get-RDUserSession (из модуля RemoteDesktop) для серверных сред, а для локальных процессов — Get-Process. Для завершения найденных сеансов используйте LOGOFF ID_сеанса, для отправки сообщения — MSG ID_сеанса текст.
FAQ
В чём разница между QUERY SESSION и QUERY USER?
QUERY SESSION показывает все сеансы, включая системные и прослушивающие (Listen). QUERY USER выводит только сеансы с авторизованными пользователями и содержит информацию о времени простоя.
Как принудительно завершить сеанс, найденный через QUERY?
Используйте команду LOGOFF ID_сеанса /SERVER:сервер, где ID берётся из столбца ID вывода QUERY SESSION.
Работает ли QUERY на обычной Windows 10 (не сервер)?
Команда присутствует в системе, но большинство подкоманд ограничены: QUERY SESSION покажет только текущий консольный сеанс, QUERY TERMSERVER может не работать без установленной роли RDS.
Как узнать, в каком сеансе запущен конкретный процесс?
Выполните QUERY PROCESS имя_процесса.exe — в выводе будет столбец SESSIONNAME с именем сеанса.
Можно ли использовать QUERY для мониторинга в скрипте?
Да. Вывод QUERY можно перенаправить в файл или обработать через FIND/FINDSTR: QUERY SESSION | FINDSTR "Disc" найдёт все отключённые сеансы для последующей обработки.
Что означает статус Disc в выводе QUERY SESSION?
Disc (Disconnected) означает, что пользователь отключился от RDP-сеанса, но сеанс не завершён — его процессы продолжают работать. Такие сеансы потребляют ресурсы сервера; их можно завершить через LOGOFF.


