Команда QUERY используется для получения информации об использовании терминальных серверов пользователями, выполнившими подключение к удаленным рабочим столам по протоколу RDP (Remote Desktop Protocol). Позволяет получить сведения о подключениях и некоторые статистические данные об использовании ресурсов терминальных серверов.
Команда применяется в одном из контекстов:
По каждому из контекстов можно получить подсказку по использованию:
Команда QUERY PROCESS может быть заменена командой QPROCESS, команда QUERY USER – командой QUSER, команда QUERY SESSION – командой QWinsta, команда QERY TERMSERVER – командой Qappsrv.
Для получения сведений о сеансах пользователей используется команда:
QUERY SESSION [имя сеанса | пользователь | ID сеанса] [/SERVER:сервер] [/MODE] [/FLOW] /CONNECT] [/COUNTER] [/VM]
Пример отображаемой информации:
rdp-tcp
netadmin
termuser
User
RDPuser1
Samara
buhgalt9
ukit
2
3
7
9
15
266
65536
Активно
Диск
Диск
Активно
Активно
Диск
Прием
rdpwd
Всего сеансов создано: 185955
Всего сеансов отключено: 186146
Всего сеансов переподключено: 261
Для получения сведений о терминальных серверах домена используется команда:
QUERY TERMSERVER [имясервера] [/DOMAIN:домен] [/ADDRESS] [/CONTINUE]
Параметры командной строки:
Для отображения сведений о процессах используется команда:
QUERY PROCESS [* | | | | /ID:nn ] /SERVER: ]
Параметры командной строки:
/SERVER:имя_сервера Опрашиваемый сервер, обслуживающий сеансы подключения к удаленному рабочему столу.
Примеры использования QPROCESS:
При получении сведений о процессах, связанных с исполняемым файлом, указывать расширение обязательно. Например:
Пример отображаемой информации:
| ПОЛЬЗОВАТЕЛЬ (нет данных) (нет данных) система система система система система система dwm-1 local service network service user1 user1 user1 user1 user1 | СЕАНС services services services services services console console services console services services console console console console console | ID 0 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1 | PID 0 4 288 428 484 492 536 592 812 828 496 2220 1772 3528 3548 948 | ОБРАЗ system |
При большом объеме информации, можно использовать команду QUERY PROCESS в цепочке с командой more :
Query Process | more
Для получения сведений о пользователях используется команда:
QUERY USER [ | | ] [/SERVER: ]
Параметры командной строки:
Примеры использования команды QUERY USER:
Пример отображаемой информации:
| ПОЛЬЗОВАТЕЛЬ user1 user2 | СЕАНС console rdp-tcp#0 | ID 1 1 | СТАТУС Активно Активно | БЕЗДЕЙСТВ. . . | ВРЕМЯ ВХОДА 06.08.2017 6:07 06.08.2017 6:07 |
Windows admin blog
Полезные команды cmd, powershell, администрирование, фичи и решения проблем на win/winserver
Полезные команды для терминального сервера
Рассмотрим такие команды как:
query
query — Отображение информации о процессах; сеансах; пользователя, вошедших на сервер; и серверах, обслуживающих подключение к удаленному рабочему столу
process | session | termserver | user
Более подробно здесь рассмотрятся команды:
а точнее их более короткие аналоги: qwinsta и quser
qwinsta
qwinsta (эквивалент query session) — Отображение информации о сеансах служб удаленных рабочих столов.
С помощью этой команды можно узнать, активен ли сеанс пользователя и ID сеанса
Просто команда без каких либо ключей и параметров выводит список сеансов на текущем сервере:
Ключ /server позволит указать другой сервер:
Показать информацию о сеансе конкретного пользователя:
Также можно узнать информацию о сеансе пользователя на другом сервере:
Остальные параметры и подробная справка по команде:
quser
quser (эквивалент query user) — Отображение информации о пользователях, вошедших в систему
Позволит помимо прочего узнать также время входа и время бездействия сеанса — весьма полезная информация в определенных случаях.
В остальном, все ключи у возможности, такие же как и у команды qwinsta:
Ключ /server позволит указать другой сервер:
Показать информацию о конкретном пользователе:
Показать информацию о конкретном пользователе на другом сервере:
Справка и все функции:
RDS shadow (mstsc)
RDS Shadow — теневое подключение к сеансу пользователя
Для того, чтобы узнать ID сеанса, нужно воспользоваться одной из вышеупомянутых команд: qwinsta или quser
Теневое подключение без возможности управления сеансом (только просмотр):
Теневое подключение для управления другим сеансом:
ключ /v:servername позволит подключиться к сеансам другого сервера:
msg — отправить сообщение пользователю
Для того, чтобы отправить сообщение в сеанс всем пользователям, нужно воспользоваться командой:
Можно отправить сообщение конкретному пользователю — по его логину, имени сеанса или ID сеанса. Например, так мы скажем пользователю с ID сеанса 12, что ему необходимо выйти из системы:
ID сеанса можно узнать с помощью уже рассмотренных команд qwinsta или quser
change logon
change logon — включение / отключение входа на терминальный сервер
Полностью отключить вход в терминальные сессии можно командой:
Все возможные ключи смотрим в справке:
shutdown
shutdown — перезагрузка или выключение компьютера. С необходимыми параметрами команда может быть использована для перезагрузки текущего компьютера/сервера, отложенной перезагрузки, удаленной перезагрузки другого компьютера, группы компьютеров, серверов и т.п. Команда имеет множество опций.
Так, например, команда shutdown со следующими параметрами:
перезагрузит ваш сервер (/r) спустя 180 секунд (/t 180), принудительно закроет все приложения (/f, используется при указании /t) и укажет причину перезагрузки или комментарий для пользователей (/c «комментарий для перезагрузки»).
Удаленно перезагрузить или выключить компьютер или группу компьютеров через GUI можно командой
Как узнать id сессии rdp
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами разобрали, как сделать таймер выключения компьютера. Сегодня я хочу вас научить определять ID (Уникальный идентификатор) и номер сеанса пользователя на терминальных столах. Уметь, это нужно, для решения ситуаций, когда такой сеанс зависает и пользователь не может работать и переключиться на другую ноду RDS фермы, так как посредники подключений видят, что у него есть активная сессия. Думаю. что мой опыт, описанный в статье окажется вам полезным.
Что такое ID сеанса
Когда пользователь входит на компьютер с включенными службами удаленных рабочих столов, для него запускается сеанс. Каждый сеанс идентифицируется уникальным идентификатором сеанса. Каждый такой сеанс ассоциируется с интерактивной оконной станцией (interactive window station) «WinSta0»; поэтому каждый сеанс связан со своей собственной оконной станцией «WinSta0». Для каждой оконной станции имеется три стандартных рабочих стола: рабочий стол Winlogon, рабочий стол с заставкой и интерактивный рабочий стол.
Когда пользователь выходит с сервера удаленных рабочих столов (RDC), то сеанс, который клиент имеет на сервере узла сеансов удаленных рабочих столов (ранее назывался сервер терминалов), удаляется. Однако если сеанс консоли служб удаленных рабочих столов не смог завершится, то оконные станции, связанные с сеансом консоли, не удаляются, все процессы продолжают висеть. Это влияет на поведение приложений в среде служб удаленных рабочих столов, когда они настроены для работы в контексте безопасности интерактивного пользователя, также известного как режим активации объекта «RunAs Interactive User». Вот тогда, то и выявляется ID сеанса, чтобы его грохнуть.
Методы определения ID сеанса пользователя RDP
Существует несколько методов, которые могут вам помочь определить номер сеанса и его ID на терминальных серверах и RDS фермах.
Определение ID сеанса через quser
И так у меня есть RDS ферма состоящая из хостов с Windows Server 2012 R2, в базе Active Directory есть пользователь Барбоскин Геннадий Викторович. Данный пользователь вошел на терминал, работал, но по какой-то причине он завис и чтобы корректно разлогинить его сессию нам необходимо вычислить ее номер сеанса и уникальный идентификатор. Попробуем это выполнить через утилиту quser.
Вы можете использовать эту команду, чтобы выяснить, вошел ли конкретный пользователь на конкретный сервер Session Host. Команда возвращает:
Откройте командную строку cmd, лучше в режиме администратора и введите команду:
У вас будет выведен список всех текущих сессий на вашем терминальном сервере.Если пользователей много, то сложно сразу найти нужного, так как все идет не по алфавиту. Ранее я вам показывал, как фильтровать вывод результатов в командной строке Windows, там была команда findstr. Вводим команду:
В итоге я вижу, что номер сеанса rdp-tcp#24 и его ID 45, статус активно, это означает, что человек работает. Видно его время входа. Тот же результат можно получить и вот такой конструкцией:
Вы наверное спросите, почему сразу так не ввели, все просто, я лишь еще раз напомнил вам, о фильтрации в cmd, которая работает почти с любой командой, так сказать универсальный ключ.
Так же есть возможность запустить для конкретного сервера, для этого есть ключ /server
Определение ID сеанса через qwinsta
Для того, чтобы получить номер сеанса с ID, введите в командной строке:
Утилита выведет список всех авторизованных в системе пользователей, из полезной информации вы получите:
Чтобы вывести определенного пользователя, введите команду:
Как узнать id пользователя через диспетчер задач
Покажу и графический метод. который позволяет вам получать ID и номер сеанса на терминальных столах. Откройте диспетчер задач и перейдите на вкладку «Пользователи». У вас будет отображен список сотрудников. Тут для удобства их можно выстроить по алфавиту. Все хорошо, но нет ID и номера сеанса.
Чтобы включить отображение нужных нам столбцов, вам необходимо щелкнуть правым кликом на область с именем столбцов. В контекстном меню поставьте галки на «Код» и «Сеанс».
В итоге у вас теперь появилась возможность легко просматривать идентификационный код сеанса и имя сеанса, в моем примере, это RDP-Tcp#24.
Как узнать id пользователя через query session
Получение информации о сеансе через Get-TerminalSession
PowerShell не зря называют могучим, он поистине может все. К сожалению родных командлетов, которые бы заменяли утилиты командной строки нет, но есть возможность установить дополнительные, из репозитория. Речь пойдет, о сборнике «PowerShell Community Extensions» (Pscx 3.2.2). Данный сборник включаем в себя огромный комплекс командлетов, нас будет интересовать Get-TerminalSession.
Установка «PowerShell Community Extensions» очень проста и выполняется одной командой. Перед установкой Pscx 3.2.2, вам необходимо обновить ваш PowerShell хотя бы до версии 5.1. Далее запускаете оболочку PowerShell от имени администратора и вводите команду:
Про сам сборник вы можете почитать по ссылке (https://www.powershellgallery.com/packages/Pscx/3.2.2)
Получение информации о сеансе через Get-TSSession
Модуль PSTerminalServices, так же позволяет взаимодействовать с терминальными профилями В состав PSTerminalServices входят вот такие командлеты:
Скачать PSTerminalServices вы можете по ссылке https://github.com/imseandavis/PSTerminalServices, там будет MSI пакет, если его уже по какой-то причине не будет, то можете загрузить PSTerminalServices по ссылке слева.
Установка PSTerminalServices проста до безобразия. На первом экране нажимаем «Next».
При необходимости изменяем путь установки данного модуля.
Для продолжения нажимаем «Install»
Установка модуля завершена.
Теперь, чтобы модуль запускался вам нужно разрешить запуск скриптов, напоминаю, что для текущего пользователя, это можно сделать вот так:
Далее проверьте командой, что модуль PSTerminalServices доступен в системе, выполните:
Далее импортируем модуль и запускаем его:
На выходе вы получаете информацию, о всех ваших сеансах пользователей на терминальном столе
Получение ID терминальной сессии
Добрый день, форумчане.
Какой командой или скриптом вернуть ID конкретной терминальной сессии?
Команда query session administrator выдает табличку:
| СЕАНС | ПОЛЬЗОВАТЕЛЬ | ID | СТАТУС | ТИП | УСТР-ВО |
| >rdp-tcp#13 | administrator | 6 | Активно |
Мне на выходе нужно получить только значение ID.
С повершелл знаком на Вы, гугл подсказал только вариации query session
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Нет панели в терминальной сессии
Здравствуйте. Не уверен, что правильно выбрал раздел(возможно стоило бы написать в серверном.
Выход из терминальной сессии
Добрый день. У меня стоит Windows Server 2008. К нему через терминал подключаются пользователи.
Отключение терминальной сессии
Всем привет. Собственно вопрос, как отключить терминальную сессию. Использую сервер для авто.
Печать в терминальной сессии
Здравствуйте. Имеется win server 2008 32 бит, принтер hp 1102 подключенный к компьютеру (другому).
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Завершение терминальной сессии
Здравствуйте форумчане! Написал скрипт, который завершает терминальный сеанс на сервере по ID.

Я подключаюсь терминальной сессией к серверу виндовс сервер 2008 R2 У меня монитор с возможностью.
Принтеры в терминальной сессии. 2012 R2 RDS
Добрый день! Есть принт-сервер (2012r2) и терминальный сервер (2012r2). На терминальном сервере.
Подключить локальный принтер в терминальной сессии
Надоело искать в инете и сравнивать мой случай или нет, решил спросить здесь. К локальному комп.
Удаленное управление сеансом пользователя windows стандартными средствами
Однажды мне захотелось управлять одним из домашних компьютеров удаленно, но при этом взаимодействовать с текущим пользователем, но компьютер был довольно слабый и при запуске например TeamViewer’а нагрузка процессора поднималась до 98% и компьютер начинал заметно тормозить. Попробовал стандартный RDP, но тогда «выбивался» текущий пользователь и для входа локально приходилось набивать пароль. Но чуть позже мне случайно попалась команда shadow.
Наблюдать за другим сеансом служб удаленных рабочих столов.
SHADOW < | >[/SERVER: ] [/V]
Имя сеанса.
Идентификатор сеанса.
/SERVER: Сервер терминалов (по умолчанию текущий).
/V Отображение информации о выполненных действиях.
Тогда получается что запускается всего 2 процесса.
Для того что бы все это работало нам необходимо сначала включить RemoteRPC, например через реестр:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
“AllowRemoteRPC”=dword:00000001
После этого можно будет через Диспетчер служб удаленных рабочих столов посмотреть какие пользователи залогинены на компьютере, какие у них id и какие процессы запущены (жаль только названия, нет информации о нагрузке).
По умолчанию пользователю будет задаваться вопрос с разрешением управления, можно отключить вопрос или сделать только удаленное наблюдение, меняется через реестр:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
«Shadow»=dword:0000000x
По умолчания этой строчки вообще нет и её нужно будет создавать.
Так же можно включить через групповые политики локальные или доменные. Для включения локально запускаем gpedit.msc — выбираем административные шаблоны — добавление и удаление шаблонов, добавляем System.adm из папки WINDOWS\inf
Теперь настраиваем: конфигурация компьютера — административные шаблоны — компоненты windows — службы терминалов — устанавливает правила для удаленного управления. Для windows xp.
И конфигурация компьютера — административные шаблоны — компоненты windows- службы удаленных рабочих столов – узел сеансов удаленных рабочих столов – подключения – устанавливает правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов. Для windows 7.
Все это работает и в домене, если у пользователя есть соответствующие права.
В доменных настройках профиля пользователя тоже есть настройка подобных прав (я встречал эти настройки даже в домене win 2000)
Если рассматривать терминальный сервер, то там через свойства RDP(через конфигурация узла сеансов удаленных рабочих столов) можно выставить любому пользователю права на удаленное управление,
и отдельно настроить взаимодействие или управление удаленным сеансом.
Для удобства можно подключаться через диспетчер задач
























