Mendeteksi siapa yang masuk ke mesin Windows jarak jauh

9

Bagaimana Anda mengetahui siapa yang masuk ke mesin windows jarak jauh?

Saya menggunakan psloggedon saat ini, tetapi itu memberi saya hanya satu komputer pada suatu waktu.

psloggeon \\ 172.21.0.5

psloggedon

Apakah ada cara yang lebih baik untuk memindai seluruh subnet? Lebih disukai beberapa aplikasi GUI.

Jindrich
sumber

Jawaban:

9

bukan GUI, tetapi:

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

akan melakukan pemindaian dari 172.21.0.2-254. Anda juga dapat membuat sarang:

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

Ini akan memindai subnet 172.21. {16-31} .x.

Kevin M.
sumber
Bagus, tetapi masalahnya adalah ia mencoba setiap alamat IP. Jika sebuah host tidak aktif, itu agak menggantung di sana selama 30 detik sebelum melanjutkan. Outputnya juga agak berantakan.
Jindrich
Anda bisa melakukan ping terhadap mesin (ping xxxx -n 1) dan periksa output, dengan cara itu batas waktu Anda terhadap setiap mesin adalah satu detik untuk ping
benPearce
8

Saya menemukan skrip ini . Ini memindai seluruh domain dan memberi Anda output yang bagus (nama komputer dan nama pengguna).

whoisloggedinwhere.bat> users.txt

@echo mati
setlocal
untuk / f "Token = 1" %% c in ('tampilan bersih / domain: "% USERDOMAIN%" ^ | Findstr / L / C: "\\"') melakukan (
 untuk / f "Token = *" %% u in ('PsLoggedOn -L %% c ^ | find / i "% USERDOMAIN% \"') lakukan (
  hubungi: laporkan %% c "%% u"
 )
)
endlokal
goto: EOF
:melaporkan
atur kerja =% 1
atur comp =% work: ~ 2%
setel pengguna =% 2
atur pengguna =% pengguna: "=%
set panggilan pengguna = %% pengguna: *% USERDOMAIN% \ = %%
@echo% comp%% pengguna%

Script ini menggunakan PsLoggedOn .

Jindrich
sumber
2

Mencoba nbtstat -a <computername>

PowerApp101
sumber
Anda mengajukan 2 pertanyaan. Ini jawaban Anda yang pertama.
PowerApp101
2

Saya menulis nama pengguna ke properti deskripsi komputer menggunakan skrip logon, yang memungkinkan saya melihat semua yang ada di AD Users & Computers, melakukan pencarian, dan sebagainya. Sangat berguna.

Maximus Minimus
sumber
1

Jika server menjalankan Layanan Terminal, Anda dapat menggunakan Terminal Services Manager untuk melihat server dalam domain dan siapa yang masuk ke mereka. Ini adalah GUI dan dapat ditemukan di bawah

Start -> Administrative Tools -> Terminal Services Manager
Justin Scott
sumber
1

qwinsta adalah perintah dos lain, tapi itu hanya akan memberi Anda satu per satu ...

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

Anda dapat mendeteksi pengguna yang masuk secara lokal ke workstation dengan meminta WMI melalui skrip PowerShell berikut. Ini mengembalikan nama siapa pun yang logon secara lokal atau string kosong.

function logged_in($host_name) {
    (get-wmiobject -class Win32_ComputerSystem -computername $host_name `
        -namespace "root\CIMV2").UserName
}
Michael Steele
sumber
0

Saya tidak yakin dari mana saya mendapatkannya tetapi saya memiliki kode ini yang menunjukkan pengguna pada mesin. Anda dapat membungkus ini dalam untuk setiap loop untuk memindai banyak mesin. Saya akan mengatakan bahwa jika Anda ingin tahu siapa yang masuk ke sistem, cara paling sederhana adalah mengaktifkan audit masuk dan melihat (atau meminta) log keamanan. Berikut kode untuk melihat siapa yang ada pada saat tertentu:

' 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

'=======================================================================
Jim B
sumber
0

Saya terkejut tidak ada yang menyebutkan logon2, yang telah saya gunakan selama beberapa tahun. Ini adalah implementasi GUI yang Anda minta dan tersedia di sini .

John Gardeniers
sumber
Ketika saya menjalankan ini pada Windows 7, saya menerima kesalahan: Kesalahan - Berhenti. Tidak dapat menemukan titik masuk untuk ServerBrowseDialogA0. Mungkin tidak berjalan di Win7? Apakah Anda memerlukan hak admin untuk menjalankannya tanpa kesalahan?
Steve
@ Seve, sekarang saya tahu mengapa tidak ada orang lain yang mempostingnya. Anda benar, itu tidak berfungsi pada Win 7, setidaknya bukan versi 64 bit. Saya akan melihat apakah saya dapat menyalin DLL yang diperlukan dari mesin XP dan membuatnya bekerja. Saya akan memberi tahu Anda jika saya berhasil.
John Gardeniers