ตรวจสอบผู้ที่เข้าสู่ระบบเครื่อง Windows ระยะไกล


9

คุณจะทราบได้อย่างไรว่าใครเข้าสู่ระบบเครื่อง windows ระยะไกลได้อย่างไร

ฉันใช้psloggedonในขณะนี้ แต่มันให้คอมพิวเตอร์เพียงเครื่องเดียวในแต่ละครั้ง

psloggeon \\ 172.21.0.5

psloggedon

มีวิธีที่ดีกว่าในการสแกนซับเน็ตทั้งหมดหรือไม่ บางโปรแกรม GUI

คำตอบ:


9

ไม่ใช่ GUI แต่:

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

จะทำการสแกนจาก 172.21.0.2-254 คุณยังสามารถซ้อน:

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

สิ่งนี้จะสแกน 172.21. {16-31} .x subnets


ดี แต่ปัญหาคือพยายามทุกที่อยู่ IP หากโฮสต์ไม่ได้ใช้งานอยู่จะมีการแฮงเอาท์เป็นเวลา 30 วินาทีก่อนที่จะดำเนินการต่อ ผลลัพธ์ก็ค่อนข้างยุ่งเช่นกัน
Jindrich

คุณสามารถทำ ping กับเครื่องได้ (ping xxxx -n 1) และตรวจสอบผลลัพธ์ของมันว่าวิธีการหมดเวลาของคุณกับเครื่องใด ๆ คือหนึ่งวินาทีสำหรับ ping
benPearce

8

ฉันพบสคริปต์นี้ มันสแกนทั้งโดเมนและให้ผลลัพธ์ที่ดี (ชื่อคอมพิวเตอร์และชื่อผู้ใช้)

whoisloggedinwhere.bat> users.txt

@ ปิดเสียง
setlocal
สำหรับ / f "โทเค็น = 1" %% c ใน ('มุมมองสุทธิ / โดเมน: "% USERDOMAIN%" ^ | Findstr / L / C: "\\"') ทำ (
 สำหรับ / f "โทเค็น = *" %% u ใน ('PsLoggedOn -L %% c ^ | find / i "% USERDOMAIN% \"') ทำ (
  โทร: รายงาน %% c "%% u"
 )
)
ENDLOCAL
ข้ามไป: EOF
:รายงาน
set work =% 1
set comp =% ทำงาน: ~ 2%
ตั้งค่าผู้ใช้ =% 2
ตั้งค่าผู้ใช้ =% ผู้ใช้: "=%
การตั้งค่าผู้ใช้ = %% ผู้ใช้: *% USERDOMAIN% \ = %%
@echo% comp%% ผู้ใช้%

สคริปต์นี้ใช้PsLoggedOn



2

ฉันเขียนชื่อผู้ใช้ลงในคุณสมบัติคำอธิบายคอมพิวเตอร์โดยใช้สคริปต์การเข้าสู่ระบบซึ่งช่วยให้ฉันเห็นทุกอย่างในผู้ใช้ AD & คอมพิวเตอร์ทำการค้นหาและอื่น ๆ มีประโยชน์มาก


1

ถ้าเซิร์ฟเวอร์กำลังเรียกใช้บริการเทอร์มินัลคุณสามารถใช้ Terminal Services Manager เพื่อดูเซิร์ฟเวอร์ในโดเมนและผู้ที่เข้าสู่ระบบเหล่านั้น มันเป็น GUI และสามารถพบได้ภายใต้

Start -> Administrative Tools -> Terminal Services Manager

1

qwinsta เป็นคำสั่ง dos อื่น แต่มันจะยังให้คุณทีละครั้ง ...

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

1

คุณสามารถตรวจสอบผู้ใช้ถูกในประเทศลงทะเบียนเพื่อเวิร์กสเตชันโดยการสอบถาม WMI ผ่านสคริปต์ PowerShell ต่อไปนี้ มันส่งกลับชื่อของใครก็ตามที่เข้าสู่ระบบในเครื่องหรือสตริงที่ว่างเปล่า

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

0

ฉันไม่แน่ใจว่าจะหาได้ที่ไหน แต่ฉันมีรหัสนี้วางอยู่รอบ ๆ ซึ่งแสดงผู้ใช้ในเครื่อง คุณสามารถตัดสิ่งนี้ในแต่ละลูปเพื่อสแกนเครือข่ายของเครื่อง ฉันจะบอกว่าถ้าคุณต้องการที่จะรู้ว่าใครเข้าสู่ระบบวิธีที่ง่ายที่สุดคือการเปิดการตรวจสอบการเข้าสู่ระบบและดู (หรือแบบสอบถาม) บันทึกการรักษาความปลอดภัย นี่คือรหัสเพื่อดูว่าใครกำลังอยู่ในช่วงเวลาที่กำหนด:

' 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

'=======================================================================

0

ฉันประหลาดใจที่ไม่มีใครพูดถึง logon2 แต่ฉันใช้มาหลายปีแล้ว มันเป็นเรื่องการดำเนินการ GUI ที่คุณถามหาและสามารถใช้ได้ที่นี่


เมื่อฉันเรียกใช้งานบน Windows 7 ฉันได้รับข้อผิดพลาด: Error - Quitting ไม่พบจุดเข้าใช้งานสำหรับ ServerBrowseDialogA0 บางทีมันอาจจะไม่ทำงานบน Win7? คุณต้องการสิทธิ์ผู้ดูแลระบบเพื่อรันโดยไม่มีข้อผิดพลาดหรือไม่?
Steve

@ Steve ตอนนี้ฉันรู้แล้วว่าทำไมไม่มีใครโพสต์เลย คุณพูดถูกมันไม่ทำงานบน Win 7 อย่างน้อยไม่ใช่รุ่น 64 บิต ฉันจะดูว่าฉันสามารถคัดลอก DLLs ที่ต้องการจากเครื่อง XP และใช้งานได้หรือไม่ ฉันจะแจ้งให้คุณทราบหากฉันประสบความสำเร็จ
John Gardeniers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.