Como verificar quem está atualmente conectado à estação de trabalho do Windows a partir da linha de comando?

34

O ambiente está no domínio, o servidor é o Windows Server 2003, as estações de trabalho instalam o Vista eo XP.
Eu preciso da maneira de verificar remotamente quem está atualmente conectado na estação de trabalho, de preferência a partir de uma linha de comando simples e sem sysinternals ou programas de terceiros.

Obrigado

    
por Andrija Cacanovic 27.06.2009 / 14:09

4 respostas

43

veja aqui: link

Eles sugerem o comando wmic que está disponível no Windows:

WMIC /NODE: xxx.xxx.xxx.xxx COMPUTERSYSTEM GET USERNAME Will return the username currently logged into xxx.xxx.xxx.xxx

or WMIC /NODE: "workstation_name" COMPUTERSYSTEM GET USERNAME will return the username currently logged into "workstation_name"

    
por 27.06.2009 / 14:26
17

Desculpe, não percebi que você não quer usar Sysinternals.
Que agora é uma ferramenta de technet da Microsoft, algum motivo específico para não usá-lo?
Eu preferi a Sysinternals a outras ferramentas de terceiros antes de Mark Russinovich mudar para a Microsoft.

O pacote Microsoft Sysinternals tem uma ferramenta chamada Psloggedon ,

psloggedon.exe -l

Há também NBTSTAT ,

nbtstat -a NetBIOS-Computer-NAme
    
por 27.06.2009 / 14:30
11

Eu usei win32_loggedonuser, mas me deparei com um problema em que mais de um usuário de domínio foi retornado, por isso não funcionou para minhas finalidades. Em vez disso eu usei (em powershell)

#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
}

o if é porque às vezes o getowner reportará mais de um usuário por algum motivo, não sei por que, mas no meu caso foi o mesmo usuário, então não foi um problema.

    
por 28.03.2013 / 19:29
6

Você pode obter essas informações em win32_loggedonuser.

De esta página :

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
    
por 27.06.2009 / 14:28