Посмотреть активные сессии windows

Поиск активных сессий и залогиненных пользователей с Powershell

Иногда может понадобится проверить какие в данный момент залогинены в системе, то есть являются активными. Такую информацию можно использовать для аудита, например для проверки какие учетные записи за какими компьютерами сидят или для последующей перезагрузки сервера, что бы не останавливать работу коллег. В примерах ниже рассмотрено как выполнять удаленные команды для получения активных пользователей и возврата включенных пользователей Active Directory.

Навигация по посту

Получение имени залогиненного пользователя

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

Есть еще вариант использовать CIM, который может работать немного быстрее:

Обе команды могут работать удаленно если добавить атрибут ComputerName:

Если вы планируете выполнять эти команды удаленно, то может понадобится выполнить предварительные настройки в виде открытия портов и необходимых правах.

Получить только имя пользователя можно так:

Как вы знаете в Winodws есть так же параллельные сеансы сервисов. Если вам нужно вернуть имена этих аккаунтов нужно использовать класс «win32_LoggedOnUser»:

Получение списка компьютеров

Если у вас нет списка компьютеров к которым вы планируете подключиться и узнать активного пользователя — это можно сделать через AD. На примере ниже будут возвращены все компьютеры:

Операция по получению списка компьютеров может быть очень долгой, если у вас большой парк ПК в AD. Вы можете вернуть только компьютеры, которые не отключены в AD (Disable) следующим способом:

Можно использовать и фильтрацию. Так я верну компьютеры имена которые начинаются на «CL»:

Получить список имен мы можем так:

Если у вас список компьютеров не относится к AD или имеет другой формат — то просто преобразуйте его в массив:

Удаленное получение залогиненных пользователей

Выше уже рассматривался вариант получения имени пользователя удаленно используя WMI и CIM. Если обе команды, то всех пользователей активных в данный момент мы можем получить так:

Такой подход может привести к ошибкам так как мы не проверяем включены ли компьютеры:

Мы можем просто не выводить ошибки с помощью «-ErrorAction SilentlyContinue» или заранее пинговать (что было бы правильнее с точки зрения времени выполнения). В примере ниже я так же разбиваю имя компьютера и логин в более удобный формат:

Если вы не хотите выполнять команды удаленно через WMI, то вы можете использовать PSRemoting. От так же требует предварительных настроек, которые описаны в статье «Удаленное управление через Powershell». Команда, которая использует PSRemoting, будет выглядеть примерно так же:

Получение включенных пользователей AD

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

Для возврата только отключенных учетных записей используйте $False.

Такой подход работает и с объектами компьютеров в AD:

Для последующей выгрузки данных в Excel почитайте статью «Как в Powershell выгрузить из AD пользователей и группы CSV».

Whoami или WMI

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

Как можно увидеть она вернет ту же информацию, что и класс WMI. Ситуация меняется, когда эти команды используются удаленно:

Читайте также:  Не отображается список пользователей windows 10

Как видно, в случае с whoami у нас вернулось имя учетной записи выполнившей команду Powershell, а с WMI пользователь Windows.

7 способов посмотреть, кто работает на сервере терминалов

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

Конечно с просмотра «Активных» или «Отключенных» сессий пользователей.

Без этой картины администрирование сервера терминалов невозможно.

Помимо статьи, записал также, и подробное видео, о том как администрировать пользователей на сервере терминалов (Новичкам смотреть обязательно!)

Конечно, данная тема также подымается и на курсе: Администратор 1С!

И так, конечно мы должны во всех подробностях видеть, что у нас происходит на сервере терминалов!

Какие процессы запущены от имени тех или иных пользователей (в т.ч. процессы 1С) их идентификаторы, id сессий пользователей, это и многое другое помогает администратору всегда быть в курсе того что происходит на сервере и соответственно всем этим управлять, и вовремя реагировать на различные ситуации.

На разных версиях Windows server администраторы по-разному решают этот вопрос.

Кто-то смотрит пользователей используя простой «Диспетчер задач» на Windows server 2012 – 2016. Некоторые используют различные команды в CMD, ну а кое-кто использует PowerShell .

Но все администраторы хотят одного:

1. Чтоб быстро посмотреть всех пользователей кто работает на сервере.

2. Чтоб это было как можно информативней.

3. Чтоб бесплатно.

Поэтому поводу решил собрать все лучшие, простые и быстрые способы которые (на мое мнение) стоит использовать.

Уверен, что многим начинающим администраторам эти способы помогут в администрировании сервера терминалов.

И так способ первый и самый простой (На Windows server 2012 R2)

1. Диспетчер задач.

«Диспетчер задач» – вкладка «Пользователи» – позволяет нам видеть пользователей, которые работают на этом сервере.

Но по умолчанию стандартный «Диспетчер задач» – вкладка «Пользователи» нам не покажет, что пользователь работает на сервере удаленно, используя RDP, хорошо, что это можно легко исправить.

Правый клик мышкой на панели «Пользователь» и в появившимся контекстном меню

ставим птичку напротив «Сеанс» а также стоит поставить и напротив «Имя клиента».

Так мы будем знать, что этот пользователь работает у нас на сервере через RDP.

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

2. quser

Следующий метод это использование команды quser в CMD или PowerShell.

Quser – это аналог QUERY USER (Такое сокращение позволяет выполнять команду быстрее)

Здесь все просто запускаем CMD или PowerShell и пишем команду quser

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

Метод очень простой быстрый и достаточно информативный.

Он покажет Вам – Пользователя, Сеанс, его ID, Статус , Бездействие сеанса, и время входа.

Если мы хотим посмотреть только какого-то конкретного пользователя, тогда можно написать например так:

Term01 – это логин пользователя.

Большинство системных администраторов отдают предпочтение именно этому способу.

И не только потому, что быстро, просто и т.д., но и потому что можно смотреть удаленно всех пользователей, сидя за своим ПК, где не будь в локальной сети.

И для этого достаточно ввести команду с параметром SERVER

Вместо IP можно указать (хост) имя сервера терминалов.

Читайте также:  При загрузке windows снова

Формат командной строки:

QUSER [; пользователь ; | ; имя сеанса ; | ; ID сеанса ;] [/SERVER:; сервер ;]

Если Вы хотите больше узнать о технической стороне 1С, тогда регистрируйтесь на первый бесплатный модуль курса: Администратор 1С

Команда Query — отображение информации о сеансах пользователей.

Команда QUERY используется для получения информации об использовании терминальных серверов пользователями, выполнившими подключение к удаленным рабочим столам по протоколу RDP (Remote Desktop Protocol). Позволяет получить сведения о подключениях и некоторые статистические данные об использовании ресурсов терминальных серверов.

Команда применяется в одном из контекстов:

По каждому из контекстов можно получить подсказку по использованию:

Query PROCESS /? — отобразить справочную информацию об использовании команды query process — сведения о процессах.

Команда QUERY PROCESS может быть заменена командой QPROCESS, команда QUERY USER – командой QUSER, команда QUERY SESSION – командой QWinsta, команда QERY TERMSERVER – командой Qappsrv.

Для получения сведений о сеансах пользователей используется команда:

QUERY SESSION [имя сеанса | пользователь | ID сеанса] [/SERVER:сервер] [/MODE] [/FLOW] /CONNECT] [/COUNTER] [/VM]

имя сеанса — Имя сеанса.

пользователь — Сеанс пользователя с этим именем.

ID сеанса — Идентификатор сеанса.

/SERVER:сервер — Опрашиваемый сервер (по умолчанию текущий).

/MODE — Отображение текущих параметров линии. Используется при удаленном подключении с использованием последовательных линий связи.

/FLOW — Отображение текущих параметров управления потоком. Используется при удаленном подключении с использованием последовательных линий связи .

/CONNECT — Отображение текущих параметров подключения.

/COUNTER — Отображение информации счетчиков служб удаленных рабочих столов.

/VM — Отображение информации о сеансах в виртуальных машинах.

query session /server:rdserver1 — отобразить сведения о сеансах всех пользователей терминального сервера rdserver1

Пример отображаемой информации:

СЕАНС
rdp-tcp#2

rdp-tcp

ПОЛЬЗОВАТЕЛЬ
netadmin
termuser
User
RDPuser1
Samara
buhgalt9
ukit
ID
2
3
7
9
15
266
65536
СТАТУС
Активно
Диск
Диск
Активно
Активно
Диск
Прием
ТИП
rdpwd

query session /server:rdserver /mode — отобразить сведения о параметрах последовательного порта — скорость передачи, длина посылки, тип контроля четности, длина стоповых бит.

query session /server:SERVER /counter — отобразить статистические сведения о сеансах удаленного рабочего стола сервера SERVER. В этом случае, кроме списка активных сеансов, отображается еще и статистика в виде :

Всего сеансов создано: 185955

Всего сеансов отключено: 186146

Всего сеансов переподключено: 261

query session 1446 — отобразить сведения о сеансе с идентификатором >
query session admin /server:rdpserver — отобразить сведения о сеансе пользователя admin

qwinsta — отобразить информацию о всех сеансах всех пользователей текущего компьютера. Локальные сеансы отображаются с именем console , удаленные – rdp-tcp#N

Для получения сведений о терминальных серверах домена используется команда:

QUERY TERMSERVER [имясервера] [/DOMAIN:домен] [/ADDRESS] [/CONTINUE]

Параметры командной строки:

имя_сервера — Задает сервер, обслуживающий сеансы подключения к удаленному рабочему столу.

/DOMAIN:домен — Отображение информации для указанного домена (по умолчанию для текущего домена).

/ADDRESS — Отображение адресов сети и узлов.

/CONTINUE — Не останавливаться при заполнении каждого экрана.

query termserver — отобразить информацию о всех терминальных серверах текущего домена.

query termserver RDserver /ADDRESS — отобразить информацию о терминальном сервере RDserver текущего домена, включая его адрес.

qappsrv.exe /domain:MyDom — отобразить информацию о терминальных серверах домена MyDom .

Для отображения сведений о процессах используется команда:

QUERY PROCESS [* | | | | /ID:nn ] /SERVER: ]

Параметры командной строки:

* — Отображать все видимые процессы.

ID процесса — Отображение процесса, заданного этим идентификатором.

пользователь — Отображение всех процессов для данного имени пользователя.

имя сеанса — Отображение всех процессов для указанного сеанса.

/ID:nn — Отображение всех процессов для сеанса nn .

имя программы — Отображение всех процессов, связанных с этой программой.

/SERVER:имя_сервера Опрашиваемый сервер, обслуживающий сеансы подключения к удаленному рабочему столу.

Примеры использования QPROCESS:

QUERY PROCESS /? — отобразить подсказку по использованию команды.

QUERY PROCESS * — отобразить сведения обо всех видимых процессах

QUERY PROCESS — при выполнении команды без параметров, отображаются сведения о процессах текущего пользователя.

QUERY PROCESS /server:winsrv — отобразить процессы текущего пользователя на сервере с именем winsrv

QUERY PROCESS /server:192.168.0.1 — отобразить процессы текущего пользователя на сервере с IP-адресом 192.168.0.1

QUERY PROCESS user1 — отобразить сведения о процессах, выполняющихся в контексте пользователя с именем user1

query process система — отобразить сведения о системных процессах.

QUERY PROCESS svchost.exe — отобразить сведения о процессах, связанных с исполняемым файлом svchost.exe

При получении сведений о процессах, связанных с исполняемым файлом, указывать расширение обязательно. Например:

query process services.exe — отобразить сведения о процессах, связанных с исполняемым файлом services.exe

query process services — отобразить сведения о процессах, связанных с сеансом services

query process console — отобразить все процессы сеанса console — локального пользователя Windows.

query process rdp-tcp#0 — отобразить все процессы, связанные с удаленным сеансом rdp-tcp#0 .

QPROCESS /ID:144 — отобразить процессы сеанса с идентификатором 144

Пример отображаемой информации:

ПОЛЬЗОВАТЕЛЬ
(нет данных)
(нет данных)
система
система
система
система
система
система
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
smss.exe
csrss.exe
wininit.exe
csrss.exe
winlogon.exe
services.exe
dwm.exe
svchost.exe
svchost.exe
taskhostex.exe
explorer.exe
cmd.exe
conhost.exe
qprocess.exe

При большом объеме информации, можно использовать команду QUERY PROCESS в цепочке с командой more :

Query Process | more

Для получения сведений о пользователях используется команда:

QUERY USER [ | | ] [/SERVER: ]

Параметры командной строки:

пользователь — Имя пользователя.

имя сеанса — Имя сеанса.

ID сеанса — Идентификатор сеанса.

/SERVER:сервер — Опрашиваемый сервер (по умолчанию — текущий).

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

QUERY USER /? — отобразить подсказку по использованию команды.

QUERY USER — при выполнении команды QUERY USER без параметров, отображаются сведения о всех пользователях, вошедших в систему на данный момент времени.

Пример отображаемой информации:

ПОЛЬЗОВАТЕЛЬ
user1
user2
СЕАНС
console
rdp-tcp#0
ID
1
1
СТАТУС
Активно
Активно
БЕЗДЕЙСТВ.
.
.
ВРЕМЯ ВХОДА
06.08.2017 6:07
06.08.2017 6:07

При выполнении команды, отображаются имена пользователей, тип сеанса, идентификатор, статус, время бездействия и время входа в систему. В примере, пользователь user1 вошел в систему локально ( сеанс console , а пользователь user2 — удаленно (сеанс rdp-tcp#0 )

QUERY USER /server:winsrv — отобразить информацию о пользователях, вошедших в систему на компьютере с именем winsrv . Результат выполнения команды зависит от прав пользователя по отношению к удаленной системе и настроек брандмауэра.

QUSER /server:192.168.0.1 — отобразить информацию о пользователях, вошедших в систему на компьютере с IP-адресом 192.168.0.1

Читайте также:  Обслуживание файловой системы средствами операционной системы windows
Оцените статью