Содержание статьи

В администрировании Windows важно точно знать, какие пользователи активно работают на компьютере. Powershell предоставляет несколько встроенных команд и методов для получения этой информации без необходимости установки дополнительных инструментов.
Команда whoami позволяет быстро определить текущего залогиненного пользователя, тогда как query user отображает все активные сеансы на локальном или удаленном компьютере. Для более детального анализа можно использовать WMI и Get-Process, что дает возможность видеть процессы конкретных пользователей и время их активности.
Для системных администраторов важно не только видеть имена пользователей, но и фильтровать данные по сеансам, времени входа и типу подключения. Powershell позволяет формировать отчеты в табличном виде, экспортировать их в CSV и автоматически отправлять на мониторинг или аудит безопасности.
Применение этих команд помогает отслеживать активность в корпоративной сети, выявлять незавершенные сеансы и предотвращать несанкционированный доступ. Настройка регулярных проверок через скрипты позволяет поддерживать контроль над рабочими станциями и серверами без ручного вмешательства.
Использование команды whoami для текущего пользователя
Для запуска достаточно открыть Powershell и ввести whoami. В корпоративной среде команда полезна при проверке контекста выполнения скриптов, служб или запланированных задач.
Чтобы получить более подробные данные, можно использовать ключи команды: whoami /groups отображает все группы, в которых состоит пользователь, а whoami /priv показывает привилегии текущей учетной записи. Это помогает выявлять права доступа и возможные ограничения на выполнение действий.
Результаты команды можно сохранять в файл для аудита: whoami /groups > C:\Users\Админ\Desktop\user_info.txt. Такой подход позволяет автоматизировать проверку пользователей на нескольких рабочих станциях через удаленное выполнение команд.
Просмотр всех активных сессий с помощью query user

Для использования на локальной машине достаточно ввести:
- query user
Для удаленного компьютера следует указать имя хоста:
- query user /server:ИмяКомпьютера
- Имя пользователя – учетная запись, которая активна
- Сессия – идентификатор сеанса
- Состояние – Active, Disconnected, Idle
- Время – продолжительность текущей активности
- Логин – время входа пользователя
Для автоматической проверки нескольких машин можно использовать цикл в Powershell:
- Создать список имен компьютеров.
- Пройтись по каждому компьютеру командой query user /server:.
- Сохранить результаты в CSV через Export-Csv.
Такой подход позволяет контролировать активные сеансы и выявлять незавершенные подключения без ручного просмотра каждой машины.
Получение информации о пользователях через Get-Process

Команда Get-Process позволяет получить список всех процессов, запущенных на компьютере, и сопоставить их с пользователями. Это дает возможность определить, какие учетные записи активны через их процессы.
Для отображения процессов с информацией о пользователе используется команда:
Get-Process | Select-Object ProcessName, Id, @{Name=»UserName»;Expression={(Get-WmiObject Win32_Process -Filter «ProcessId=$($_.Id)»).GetOwner().User}}
Для фильтрации по конкретному пользователю можно использовать:
Get-Process | Where-Object {($_.GetOwner().User) -eq «ИмяПользователя»}
Это позволяет быстро выявлять процессы конкретного пользователя, анализировать нагрузку на систему и контролировать выполнение программ на рабочих станциях и серверах.
Использование WMI для проверки залогиненных пользователей

Через WMI (Windows Management Instrumentation) можно получать точную информацию о залогиненных пользователях на локальном и удаленных компьютерах. Класс Win32_ComputerSystem позволяет определить текущего пользователя, а Win32_LogonSession и Win32_LoggedOnUser – все активные сеансы.
Пример получения текущего пользователя:
Get-WmiObject Win32_ComputerSystem | Select-Object UserName
Для отображения всех сеансов используется скрипт:
Get-WmiObject -Class Win32_LoggedOnUser | ForEach-Object { $_.Antecedent } | Select-Object Name, Domain
Этот метод позволяет:
- Выявлять всех пользователей, подключенных к системе.
- Определять тип сеанса и время входа.
- Анализировать активность на удаленных компьютерах через параметр -ComputerName.
Использование WMI удобно для автоматизации аудита и мониторинга, а также интеграции с скриптами, которые собирают информацию о всех залогиненных пользователях сети.
Скрипт для отображения всех подключений к компьютеру
Для отображения всех подключений к компьютеру можно использовать комбинацию команд Powershell и WMI. Скрипт собирает информацию о залогиненных пользователях, их сеансах и времени активности.
Пример скрипта:
$sessions = Get-WmiObject -Class Win32_LoggedOnUser
foreach ($session in $sessions) {
$user = ($session.Antecedent -split ‘»‘)[1]
Write-Output «Пользователь: $user»
}
Get-WmiObject Win32_LogonSession | ForEach-Object Select-Object LogonId, StartTime, LogonType
Результаты можно сохранять в CSV для последующего анализа или мониторинга: Export-Csv -Path C:\Users\Админ\Desktop\sessions.csv. Такой подход позволяет автоматизировать сбор данных о подключениях и интегрировать проверку в регулярные отчеты по активности пользователей.
Powershell позволяет не только получить список залогиненных пользователей, но и структурировать информацию для быстрого анализа. Для фильтрации используется Where-Object, а для выбора конкретных полей – Select-Object.
Пример фильтрации по конкретному пользователю:
Get-WmiObject Win32_LoggedOnUser | Where-Object { ($_.Antecedent -split ‘»‘)[1] -eq «ИмяПользователя» }
… | Select-Object @{Name=»Пользователь»;Expression={($_.Antecedent -split ‘»‘)[1]}}, LogonId, StartTime | Format-Table -AutoSize
Для формирования отчетов и передачи данных другим системам удобно экспортировать результаты:
… | Export-Csv -Path C:\Users\Админ\Desktop\logins.csv -NoTypeInformation
Такой подход позволяет видеть активные сеансы, время входа и идентификаторы пользователей в наглядном виде, ускоряет аудит и интеграцию информации с внешними инструментами мониторинга.
Вопрос-ответ:
Как с помощью Powershell узнать, кто в данный момент залогинен на локальном компьютере?
Для определения текущего пользователя можно использовать команду whoami. Она выводит имя учетной записи в формате ДОМЕН\ИмяПользователя. Для получения более детальной информации о группах и привилегиях используйте ключи /groups и /priv. Это позволяет быстро определить контекст выполнения текущей сессии.
Можно ли увидеть все активные сеансы пользователей на удаленной машине через Powershell?
Да, для этого подходит команда query user /server:ИмяКомпьютера. Она выводит список всех сеансов с указанием имени пользователя, состояния (Active, Disconnected, Idle), идентификатора сеанса и времени входа. Результаты можно автоматизировать с помощью скриптов и сохранять в CSV для последующего анализа.
Как определить, какие процессы на компьютере запущены конкретным пользователем?
Используйте Get-Process в связке с WMI. Например, команда Get-Process | Select-Object ProcessName, Id, @{Name=»UserName»;Expression={(Get-WmiObject Win32_Process -Filter «ProcessId=$($_.Id)»).GetOwner().User}} отображает имя процесса, его ID и пользователя, под которым он запущен. Можно фильтровать по конкретной учетной записи через Where-Object.
Какие классы WMI лучше использовать для получения информации о всех залогиненных пользователях?
Для проверки сеансов используют Win32_ComputerSystem, Win32_LogonSession и Win32_LoggedOnUser. Первый класс показывает текущего пользователя системы, а два других – все активные сеансы с деталями: тип сеанса, время входа и привязка к учетной записи. Это позволяет получать точные данные для аудита и мониторинга.
Как вывести список залогиненных пользователей в удобном для анализа виде?
После получения данных через WMI или query user можно использовать Select-Object для выбора нужных полей и Format-Table -AutoSize для табличного отображения. Для отчетов результаты удобно сохранять в CSV через Export-Csv, что позволяет быстро просматривать активность пользователей на нескольких компьютерах.
