как проверить, кто в данный момент вошел в рабочую станцию windows из командной строки?

<p>среда находится в домене, сервер - windows server 2003, на рабочих станциях установлена vista и xp).<br> мне нужен способ удаленной проверки того, кто в данный момент вошел на рабочую станцию, желательно из какой-то простой командной строки и без sysinternals или сторонних программ.</p><p>спасибо</p>

<p>это было <a href="https://web.archive.org/web/1/http://techrepublic%2ecom%2ecom/5208-7343-0.html?forumid=101&threadid=307918&messageid=3065346">первоисточник</a> но теперь 404:</p><p>они предложили использовать wmic (команда интерфейса управления windows), которая доступна в windows:</p><pre><code>wmic /node: xxx.xxx.xxx.xxx computersystem get username </code></pre><p>вернет имя пользователя, в данный момент зарегистрированного в xxx.xxx.xxx.xxx, или</p><pre><code>wmic /node: "workstation\_name" computersystem get username </code></pre><p>вернет имя пользователя, в данный момент вошедшего в "имя\_ рабочей станции"</p><p>обновление: это должно работать и в windows 10 - если вы являетесь администратором на удаленной машине.</p>

<p>извините, не заметил, что вы не хотите использовать sysinternals.<br> это теперь инструмент microsoft technet, есть какая-то конкретная причина не использовать его?<br> я предпочел sysinternals раньше других сторонних инструментов <b>марк руссинович</b> перешел в microsoft.</p><hr><p> <a href="http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx">microsoft sysinternals</a> suite имеет инструмент под названием <a href="http://technet.microsoft.com/en-us/sysinternals/bb897545.aspx">psloggedon</a> ,</p><pre><code>psloggedon.exe -l </code></pre><hr><p>также есть <a href="http://support.microsoft.com/kb/300986"> nbtstat </a> ,</p><pre><code>nbtstat -a netbios-computer-name </code></pre>

<p>я использовал win32\_loggedonuser, но столкнулся с проблемой, когда <em>более одного пользователя домена</em>, поэтому это не сработало для моих целей. вместо этого я использовал (в powershell)</p><pre><code>#get currently logged in user $explorerprocess = gwmi win32_process | where name -match explorer if($explorerprocess.getowner().user.count -gt 1){ $loggedonuser = $explorerprocess.getowner().user[0] } else{ $loggedonuser = $explorerprocess.getowner().user } </code></pre><p>это потому, что иногда по какой-то причине getowner сообщает о нескольких пользователях, не знаю почему, но в моем случае это был один и тот же пользователь, поэтому это не было проблемой.</p>

<p>вы можете получить эту информацию из win32\_loggedonuser.</p><p>от <a href="http://www.ureader.com/message/1436360.aspx">эта страница</a> :</p><pre><code>strcomputer = "." ' " use "." for local computer set objwmi = getobject("winmgmts:" \_ & "{impersonationlevel=impersonate}!\\" \_ & strcomputer & "\root\cimv2") set colsessions = objwmi.execquery \_ ("select * from win32\_logonsession where logontype = 2 or logontype = 10") if colsessions.count = 0 then wscript.echo "no interactive users found" else for each objsession in colsessions if objsession.logontype = 2 then wscript.echo "logon type: console" else wscript.echo "logon type: rdp/terminal server" end if set collist = objwmi.execquery("associators of " \_ & "{win32\_logonsession.logonid=" & objsession.logonid & "} " \_ & "where assocclass=win32\_loggedonuser role=dependent" ) for each objitem in collist wscript.echo "user: " & objitem.name wscript.echo "fullname: " & objitem.fullname wscript.echo "domain: " & objitem.domain next wscript.echo "session start time: " & objsession.starttime wscript.echo next end if </code></pre>