Заметки о Windows и других программных продуктах Microsoft...

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

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

Иногда требуется выяснить, кто из пользователей в данный момент работает на удаленном компьютере. Это очень просто сделать с помощью PowerShell и WMI.

При входе в систему пользователя запускается экземпляр процесса explorer.exe, поэтому узнав, кто является владельцем этого процесса мы выясним и то, кто в данный момент находится в системе. Для этого создаем скрипт следующего содержания:

$ComputerName = Read-Host ″Enter remote computer name″
$credential = Get-Credential

Get-WMIObject Win32_Process -filter ‘name=″explorer.exe″’ -computername $computername -Credential $credential |
ForEach-Object {
$owner = $_.GetOwner()
‘{0}\{1}’ -f $owner.Domain, $owner.User} |
Sort-Object |
Get-Unique |
ForEach-Object {
$rv = 1 | Select-Object ComputerName, User
$rv.ComputerName = $computername
$rv.User = $_
$rv
}

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

кто залогинен на сервере

 

Вот так просто, и не требуется никаких дополнительных оснасток.

 
 
Комментарии

(Get-WmiObject Win32_ComputerSystem -ComputerName $ComputerName -Credential $Credential).UserName

Странно copy paste не заработал пришлось изменить строку на
Get-WMIObject Win32_Process -computername $computername -Credential $credential | where {$_.name -eq ‘explorer.exe’} |
ForEach-Object { и т.д. без изменений…

Если copy-paste то копируются не те одинарные кавычки. Пофиксите их и будет работать с фильтром.

Зачем такие сложности ☺.
tasklist.exe /s СЕРВЕР /FI «IMAGENAME eq explorer.exe» /v
Логин и пароль для подключения также можно использовать.

Мы не ищем легких путей 🙂