Detectar quem está conectado a máquinas Windows remotas

9

Como você descobre quem está conectado a máquinas Windows remotas?

Estou usando psloggedon no momento, mas isso me dá apenas um computador por vez.

psloggeon \172.21.0.5

psloggedon

Existe uma maneira melhor de verificar uma sub-rede inteira? De preferência, algum aplicativo GUI.

    
por Jindrich 16.06.2009 / 02:01

9 respostas

8

Encontrei este script . Faz a varredura de todo um domínio e fornece uma boa saída (nome do computador e nome de usuário).

whoisloggedinwhere.bat > users.txt

@echo off
setlocal
for /f "Tokens=1" %%c in ('net view /domain:"%USERDOMAIN%"^|Findstr /L /C:"\"') do (
 for /f "Tokens=*" %%u in ('PsLoggedOn -L %%c^|find /i "%USERDOMAIN%\"') do (
  call :report %%c "%%u"
 )
)
endlocal
goto :EOF
:report
set work=%1
set comp=%work:~2%
set user=%2
set user=%user:"=%
call set user=%%user:*%USERDOMAIN%\=%%
@echo %comp% %user%

Este script usa PsLoggedOn .

    
por 20.06.2009 / 13:59
9

não é uma GUI, mas:

for /L %x in (2,1,254) do psloggedon \172.21.0.%x

fará uma varredura de 172.21.0.2-254. Você também pode aninhar:

for /L %z in (16,1,31) do for /L %x in (1,1,254)  do psloggedon \172.21.%y.%x

Isso varrerá as sub-redes 172.21. {16-31} .x.

    
por 16.06.2009 / 02:09
2

Experimente nbtstat -a <computername>

    
por 16.06.2009 / 02:08
2

Eu escrevo o nome de usuário na propriedade de descrição do computador usando um script de logon, o que me permite ver tudo em AD Users & Computadores, pesquisas nele e assim por diante. Muito útil.

    
por 20.06.2009 / 20:06
1

Se os servidores estiverem executando os Serviços de Terminal, você poderá usar o Gerenciador de Serviços de Terminal para visualizar os servidores em um domínio e quem está conectado a eles. É GUI e pode ser encontrado em

Start -> Administrative Tools -> Terminal Services Manager
    
por 16.06.2009 / 02:11
1

qwinsta é outro comando dos, mas ainda assim você só receberá um de cada vez ...

C:\>qwinsta /server:test_srv
 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 console           test_usr                  0  Active  wdcon
 rdp-tcp                                 65536  Listen  rdpwd
    
por 22.06.2009 / 17:45
1

Você pode detectar um usuário localmente conectado a uma estação de trabalho consultando o WMI por meio do seguinte script do PowerShell. Ele retorna o nome de quem está logado localmente ou a string vazia.

function logged_in($host_name) {
    (get-wmiobject -class Win32_ComputerSystem -computername $host_name '
        -namespace "root\CIMV2").UserName
}
    
por 03.03.2010 / 17:20
0

Não tenho certeza de onde consegui, mas tenho esse código em volta que mostra os usuários em uma máquina. Você pode envolver isso em um loop para cada varredura de um monte de máquinas. Eu diria que, se você quiser saber quem está conectado a um sistema, a maneira mais simples é ativar a auditoria de login e examinar (ou consultar) o log de segurança. Aqui está o código para ver quem está em determinado momento:

' PARAMETERS
'
strComputer = "machineName"   ' use "." for local computer 
strUser = "domain\user" ' comment this line for current user
strPassword = "password" ' comment this line for current user

' CONSTANTS
'
wbemImpersonationLevelImpersonate = 3
wbemAuthenticationLevelPktPrivacy = 6

'=======================================================================
' MAIN
'=======================================================================

' Connect to machine
'
If Not strUser = "" Then

    ' Connect using user and password
    '
    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMI = objLocator.ConnectServer _
        (strComputer, "root\cimv2", strUser, strPassword)
    objWMI.Security_.ImpersonationLevel = wbemImpersonationLevelImpersonate
    objWMI.Security_.AuthenticationLevel = wbemAuthenticationLevelPktPrivacy

Else

    ' Connect using current user
    '
    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2") 

End If

' Get OS name
'
Set colOS = objWMI.InstancesOf ("Win32_OperatingSystem")

For Each objOS in colOS
    strName = objOS.Name
Next

If Instr(strName, "Windows 2000") > 0 Then

    '-------------------------------------------------------------------
    ' Code for Windows 2000
    '-------------------------------------------------------------------

    ' Get user name
    '
    Set colComputer = objWMI.ExecQuery("Select * from Win32_ComputerSystem")

    For Each objComputer in colComputer
        Wscript.Echo "User: " & objComputer.UserName
    Next

    ' ------------------------------------------------------------------

Else

    ' ------------------------------------------------------------------
    ' Code for Windows XP or later
    ' ------------------------------------------------------------------

    ' Get interactive session
    '
    Set colSessions = objWMI.ExecQuery _ 
          ("Select * from Win32_LogonSession Where LogonType = 2") 

    If colSessions.Count = 0 Then 
        ' No interactive session found
        '
        Wscript.Echo "No interactive user found" 
    Else 
        'Interactive session found
        '
        For Each objSession in colSessions 

            Set colList = objWMI.ExecQuery("Associators of " _ 
            & "{Win32_LogonSession.LogonId=" & objSession.LogonId & "} " _ 
            & "Where AssocClass=Win32_LoggedOnUser Role=Dependent" ) 

            ' Show user info
            '
            For Each objItem in colList 
                WScript.Echo "User: " & objItem.Name 
                WScript.Echo "FullName: " & objItem.FullName 
                WScript.Echo "Domain: " & objItem.Domain 
            Next 

            ' Show session start time
            '
            Wscript.Echo "Start Time: " & objSession.StartTime 
        Next 
    End If 

    ' ------------------------------------------------------------------

End If

'=======================================================================
    
por 16.06.2009 / 07:05
0

Estou surpreso que ninguém tenha mencionado o logon2 ainda, que eu tenho usado há alguns anos. É a implementação da GUI que você pediu e está disponível aqui .

    
por 03.03.2010 / 17:41