• Страница 1 из 1
  • 1
Форум » ™ Статьи » Прочие статьи » Как узнать имя пользователя на удаленном компьютере (В этой статье мы рассмотрим несколько утилит)
Как узнать имя пользователя на удаленном компьютере

Дата: Вт, 14.09.2021, 08:26 | Сообщение 1
Регистр
04.01.2021
Сообщений
455

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

Утилиты PSLoggedOn и Qwinsta

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

Код
psloggedon \\RemoteCompName




Как вы видите, утилита вернула имя залогиненного пользователя (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. Чтобы получить список
сессий с удаленного компьютера, выполнит команду:

Код
qwinsta /server:dc01




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

Если при подключении к удаленному серверу через qwinsta вы получаете
ошибку Error 5 Access Denied, проверьте что на удаленном компьютере
разрешено удаленное управление пользователями через RPC. Включите, если
нужно через реестр следующей командой или через GPO:

Код
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). Также для получения информации с удаленных компьютеров можно использовать PSRemoting с помощью командлета Invoke-Command.

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

Код
$userinfo = Get-WmiObject -ComputerName 'wks215s1' -Class Win32_ComputerSystem
$user = $userinfo.UserName -split '\\'
$user[1]




В современных версиях PowerShell Core (pwsh.exe) вместо Get-WmiObject нужно использовать CIM командлет Get-CimInstance: 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 или командой:WinRM quickconfigPowerShell скрипт для проверки пользователей на удаленных компьютерахЕсли вам нужно собрать информацию о пользователях сразу с нескольких
компьютерах, можете использовать следующую PowerShell функцию получить
имена пользователей.

Код
function Get-LoggedUser{
[CmdletBinding()]
param
(
[string[]]$ComputerName
)
foreach ($comp in $ComputerName)
{
$output = @{'Computer' = $comp }
$output.UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp).UserName
[PSCustomObject]$output
}
}


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



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

Код
function Get-LoggedUser{
[CmdletBinding()]
param
(
[string[]]$ComputerName
)
foreach ($comp in $ComputerName)
{
if ((Test-NetConnection $comp -WarningAction SilentlyContinue).PingSucceeded -eq $true)
{
$output = @{'Computer' = $comp }
$output.UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp).UserName
}
else
{
$output = @{'Computer' = $comp }
$output.UserName = "offline"
}
[PSCustomObject]$output
}
}
$computers = (Get-AdComputer -Filter {enabled -eq "true"} -SearchBase 'OU=Kazan,DC=winitpro,DC=loc').Name
Get-LoggedUser $computers |ft -AutoSize




Также обратите внимание, что вы можете хранить в свойствах компьютеров в 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

Подписывайтесь! Рекомендуйте нашу группу своим знакомым профессионалам в IT WiN-Prog Наша группа ВКонтакте!




Дата: Вт, 14.09.2021, 19:44 | Сообщение 2
Регистр
14.09.2021
Сообщений
3

Репутация
4

Подписывайтесь! Рекомендуйте нашу группу своим знакомым профессионалам в IT WiN-Prog Наша группа ВКонтакте!



Форум » ™ Статьи » Прочие статьи » Как узнать имя пользователя на удаленном компьютере (В этой статье мы рассмотрим несколько утилит)
  • Страница 1 из 1
  • 1
Поиск: