QUERY — получить информацию о сеансах и процессах Windows

QUERY — команда CMD для опроса активных сеансов пользователей и процессов на локальном или удалённом компьютере Windows. Используется при администрировании RDS.

QUERY опрашивает состояние активных сеансов пользователей и запущенных процессов на локальной или удалённой машине Windows. Команда незаменима при администрировании терминальных серверов (RDS/Remote Desktop Services): позволяет увидеть, кто подключён, в каком состоянии сеанс и какие процессы в нём выполняются.

Синтаксис команды 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.

Оцените статью
( Пока оценок нет )
MW10
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.