Windows список пользователей удаленный компьютер

Описание команды NET USER

Команда NET USER предназначена для добавления, редактирования или просмотра учетных записей пользователей на компьютерах. При выполнении команды в командной строке без параметров отображается список учетных записей пользователей Windows, присутствующих на компьютере (эта команда также хорошо работает и в Windows 10). Информация об учетных записях пользователей хранится в базе данных Windows.

Синтаксис команды NET USER

net user [имя_пользователя [пароль | *] [параметры]] [/domain]

net user имя_пользователя <пароль | *>/add [параметры] [/domain]

net user имя_пользователя [/delete] [/domain], где

  • имя_пользователя — Указывает имя учётной записи пользователя, которую можно добавить, удалить, отредактировать или просмотреть. Имя может иметь длину до 20 символов.
  • пароль — Присваивает или изменяет пароль пользователя. Введите звездочку (*) для вывода приглашения на ввод пароля. При вводе с клавиатуры символы пароля не выводятся на экран.
  • /domain — Выполняет операцию на контроллере основного для данного компьютера домена.
  • параметры — Задает параметр командной строки для команды.
  • net help команда — Отображение справки для указанной команды net.
  • /delete — Удаление учетной записи пользователя.

Дополнительные параметы команды NET USER

  • /active: Активирует или деактивирует учетную запись. Если учетная запись не активирована, пользователь не может получить доступ к серверу. По умолчанию учетная запись активирована.
  • /comment:»текст» — Позволяет добавить описание учетной записи пользователя (максимум 48 символов). Текст описания заключается в кавычки.
  • /countrycode: nnn — Использует код страны, указанный для операционной системы, для реализации соответствующих языковых файлов при отображении пользовательской справки и сообщений об ошибках. Значение 0 соответствует коду страны, используемому по умолчанию.
  • /expires: <дата | never>— Дата истечения срока действия учетной записи. Значение never соответствует неограниченному сроку действия. Дата указывается в формате мм/дд/гг или дд/мм/гг в зависимости от кода страны. Месяц может указываться цифрами, полностью или в сокращенном виде (тремя буквами). Год может указываться двумя ли четырьмя цифрами. Элементы даты разделяются слэшем (/) без пробелов.
  • /fullname:» имя » — Полное имя пользователя (в отличии от имени учетной записи пользователя). Имя указывается в кавычках.
  • /homedir: путь — Указывает путь к домашнему каталогу пользователя. Указанное место должно существовать.
  • /passwordchg: Указывает, может ли пользователь изменять свой пароль (по умолчанию может).
  • /passwordreq: Указывает, должна ли учетная запись пользователя иметь пароль (по умолчанию должна).
  • /profilepath[:путь] — Указывает путь к профилю входа в систему пользователя.
  • /scriptpath: путь — Путь к сценарию, используемому пользователем для входа в систему.
  • /times: <время | all>— Время для входа в систему. Параметр время указывается в формате день[-день][,день[-день]],час [-час][,час [-час]], причем приращение равняется 1 часу. Название дней недели могут указываться полностью или в сокращенном виде. Часы могут указываться в 12- или 24-часовом представлении. Для 12-часового представления используются обозначения am, pm, a.m. или p.m. Значение all соответствует отсутствию ограничений на время входа в систему, а пустое значение обозначает полный запрет на вход в систему. Значения дней недели и времени разделяются запятой; несколько записей для значений дней недели и времени разделяются точкой с запятой.
  • /usercomment:»текст» — Позволяет администратору добавить или изменить комментарий к учетной записи.
  • /workstations: <имя_компьютера[. ] | *>— Позволяет указать до 8 компьютеров, с которых пользователь может войти в сеть. Если для параметра/workstations не указан список компьютеров или указано значение *, пользователь может войти в сеть с любого компьютера.

Примеры команды NET USER

  • Для вывода списка всех пользователей данного компьютера служит команда: net user;
  • Для вывода информации о пользователе «petr» служит следующая команда: net user petr;
  • Для добавления учетной записи пользователя Petr с полным именем пользователя и правом на подключение с 8 до 17 часов с понедельника по пятницу используется следующая команда: net user petr /add /times:Пн-Пт,08:00-17:00/fullname:»Petr».
  • Для удаления учетной записи необходимо ввести команду: net user petr /delete;
  • Для отключения учетной записи необходимо ввести команду: net user petr /active:no.

Видео — Работа с утилитой NET USER

Поиск активных сессий и залогиненных пользователей с 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. Ситуация меняется, когда эти команды используются удаленно:

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

PowerShell – Получение информации о локальных пользователях и группах

Чтобы быстро получить информацию о списке локальных пользователей на удалённом компьютере можно воспользоваться подключением через PowerShell к интерфейсу WMI с запросом в одну строку:

Get-WmiObject Win32_UserAccount -ComputerName MyPC -Filter «Domain= MyPC'»

Тоже самое, но уже при обращении к интерфейсу ADSI :

$computer = [ ADSI ] «WinNT://$computerName,computer»

Если нужно получить информацию с локального компьютера в переменной $ computerName укажем значение «.»

По аналогии для получения списка локальных групп безопасности удалённого компьютера используем команду:

Get-WmiObject Win32_Group -ComputerName MyPC -Filter «Domain=’MyPC'»

$computer = [ ADSI ] «WinNT://$computerName,computer»

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

$computer = [ ADSI ] «WinNT:// $computerName,computer»

write-host «Group:» $_ .Name

write-host «Descr:» $_ .Description

$group =[ ADSI ] $_ .psbase.Path

$group .psbase.Invoke( «Members» ) | foreach <

$ADSIName = $_ .GetType().InvokeMember( «AdsPath» , ‘GetProperty’ , $null , $_ , $null )

[ String ]:: Join ( «» , $ADSIName .Split( «/» )[ — 2.. — 1])

$ADSIName .Split( «/» )[ — 1]

Janel Blog — Script pour l’énumération des membres d’un groupe

Как узнать имя пользователя на удаленном компьютере?

Довольно часто администратору нужно быстро узнать имя пользователя, который выполнил вход на удаленном компьютере Windows. В это статье мы рассмотрим несколько утилит и PowerShell скриптов, которые помогут вам узнать имена пользователей, залогиненых на удаленных компьютерах в сети.

Утилиты PSLoggedOn и Qwinsta

В комплекте утилит SysInternals PSTools от Microsoft есть консольная утилита PSLoggedOn.exe, которую можно использовать для получения имени пользователя, который вошел на удаленный компьютер, а также список подключенных к нему SMB сеансов.

Скачайте утилиту и запустите ее в формате:

Как вы видите, утилита вернула имя залогиненного пользователя (Users logged on locally), а также список пользователей, которые по сети используют ресурсы с этого компьютера (Users logged on via resource shares).

Если нужно получить только имя пользователя, вошедшего локально, используйте опцию –l:

Psloggedon.exe \\wks215s1 –l

Утилита Psloggedon подключается к реестру и проверяет в нем имя пользователя, вошедшего локально. Для этого должна быть включена служба RemoteRegistry. Вы можете запустить ее и настроить автозапуск службы с помощью PowerShell:

Set-Service RemoteRegistry –startuptype automatic –passthru
Start-Service RemoteRegistry

Также можно получить список сессий на удаленном компьютере с помощью встроенной утилиты qwinsta . Эта утилита должна быть знакома любому администратору, управляющему терминальными серверами с Remote Desktop Services. Чтобы получить список сессий с удаленного компьютера, выполнит команду:

Утилита возвращает список всех сессий (активных и отключенных по таймауту) на RDS сервере или десктопной редакции Windows 10 (даже если вы разрешили к ней множественные RDP подключения).

reg add «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server» /v «AllowRemoteRPC» /t «REG_DWORD» /d «1» /f

Получаем имя пользователя на удаленном компьютере через PowerShell

Вы можете получить имя пользователя, который залогинен на компьютере через WMI класс Win32_ComputerSystem. Откройте консоль PowerShell и выполните команду:

Get-WmiObject -class Win32_ComputerSystem | Format-List Username

Команда вернула имя пользователя, который выполнил вход на компьютер.

У командлета Get-WmiObject есть параметр –ComputerName, который можно использовать для получения доступа к WMI объектам на удаленном компьютере. Следующая команда вернет имя пользователя с удаленного компьютера:

(Get-WmiObject -class Win32_ComputerSystem –ComputerName wks215s1).Username

Данная команда показывает только пользователя, вошедшего на консоль (не через RDP).

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

$userinfo = Get-WmiObject -ComputerName ‘wks215s1’ -Class Win32_ComputerSystem
$user = $userinfo.UserName -split ‘\\’
$user[1]

Get-CimInstance –ComputerName wks215s1 –ClassName Win32_ComputerSystem | Select-Object UserName

(Get-CimInstance -ComputerName wks215s1 -ClassName Win32_ComputerSystem).CimInstanceProperties | where<$_.Name -like "UserName">| select value

GetCiminstance использует WinRM для подключения к удаленным компьютерам, поэтому на них нужно включить и настроить WinRM через GPO или командой:

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

Если вам нужно собрать информацию о пользователях сразу с нескольких компьютерах, можете использовать следующую PowerShell функцию получить имена пользователей.

На вход функции Get-LoggedUser нужно передать имена компьютеров, на которых нужно проверить имена пользователей:

Если для какого-то компьютера функция вернула пустое имя пользователя, значит на компьютер никто не залогинен.

Можно получить имена пользователей, которые работают на компьютерах в домене Active Directory. Для получения списка компьютеров нужно использовать командлет Get-ADComputer. В следующем примере мы получим имена пользователей, которые работают за активными компьютерами в определенном OU домена. Чтобы скрипт работал быстрее перед тем, как обратится к обратится к удаленному компьютеру, я добавил проверку его доступности по сети через ICMP пинг с помощью командлета Test-NetConnection:

Также обратите внимание, что вы можете хранить в свойствах компьютеров в AD имя пользователя, который выполнил вход. Для этого можно использовать логон скрипт, описанный в статье “Set-ADComputer: добавляем информацию о пользователе в свойства компьютеров AD”

После этого вам не нужно сканировать все компьютеры, чтобы найти где залогинен определенный пользователь. Можно найти компьютер пользователя простым запросом к Active Directory:

$user=’dvpetrov’
$user_cn=(get-aduser $user -properties *).DistinguishedName
Get-ADComputer -Filter «ManagedBy -eq ‘$user_cn'» -properties *|select name,description,managedBy|ft

Читайте также:  Windows appcrash explorer exe
Оцените статью