คุณจะทราบได้อย่างไรว่าใครเข้าสู่ระบบเครื่อง windows ระยะไกลได้อย่างไร
ฉันใช้psloggedonในขณะนี้ แต่มันให้คอมพิวเตอร์เพียงเครื่องเดียวในแต่ละครั้ง
psloggeon \\ 172.21.0.5
มีวิธีที่ดีกว่าในการสแกนซับเน็ตทั้งหมดหรือไม่ บางโปรแกรม GUI
คุณจะทราบได้อย่างไรว่าใครเข้าสู่ระบบเครื่อง windows ระยะไกลได้อย่างไร
ฉันใช้psloggedonในขณะนี้ แต่มันให้คอมพิวเตอร์เพียงเครื่องเดียวในแต่ละครั้ง
psloggeon \\ 172.21.0.5
มีวิธีที่ดีกว่าในการสแกนซับเน็ตทั้งหมดหรือไม่ บางโปรแกรม GUI
คำตอบ:
ไม่ใช่ 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
ฉันพบสคริปต์นี้ มันสแกนทั้งโดเมนและให้ผลลัพธ์ที่ดี (ชื่อคอมพิวเตอร์และชื่อผู้ใช้)
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%% ผู้ใช้%
ฉันเขียนชื่อผู้ใช้ลงในคุณสมบัติคำอธิบายคอมพิวเตอร์โดยใช้สคริปต์การเข้าสู่ระบบซึ่งช่วยให้ฉันเห็นทุกอย่างในผู้ใช้ AD & คอมพิวเตอร์ทำการค้นหาและอื่น ๆ มีประโยชน์มาก
ถ้าเซิร์ฟเวอร์กำลังเรียกใช้บริการเทอร์มินัลคุณสามารถใช้ Terminal Services Manager เพื่อดูเซิร์ฟเวอร์ในโดเมนและผู้ที่เข้าสู่ระบบเหล่านั้น มันเป็น GUI และสามารถพบได้ภายใต้
Start -> Administrative Tools -> Terminal Services Manager
qwinsta เป็นคำสั่ง dos อื่น แต่มันจะยังให้คุณทีละครั้ง ...
C:\>qwinsta /server:test_srv
SESSIONNAME USERNAME ID STATE TYPE DEVICE
console test_usr 0 Active wdcon
rdp-tcp 65536 Listen rdpwd
คุณสามารถตรวจสอบผู้ใช้ถูกในประเทศลงทะเบียนเพื่อเวิร์กสเตชันโดยการสอบถาม WMI ผ่านสคริปต์ PowerShell ต่อไปนี้ มันส่งกลับชื่อของใครก็ตามที่เข้าสู่ระบบในเครื่องหรือสตริงที่ว่างเปล่า
function logged_in($host_name) {
(get-wmiobject -class Win32_ComputerSystem -computername $host_name `
-namespace "root\CIMV2").UserName
}
ฉันไม่แน่ใจว่าจะหาได้ที่ไหน แต่ฉันมีรหัสนี้วางอยู่รอบ ๆ ซึ่งแสดงผู้ใช้ในเครื่อง คุณสามารถตัดสิ่งนี้ในแต่ละลูปเพื่อสแกนเครือข่ายของเครื่อง ฉันจะบอกว่าถ้าคุณต้องการที่จะรู้ว่าใครเข้าสู่ระบบวิธีที่ง่ายที่สุดคือการเปิดการตรวจสอบการเข้าสู่ระบบและดู (หรือแบบสอบถาม) บันทึกการรักษาความปลอดภัย นี่คือรหัสเพื่อดูว่าใครกำลังอยู่ในช่วงเวลาที่กำหนด:
' 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
'=======================================================================
ฉันประหลาดใจที่ไม่มีใครพูดถึง logon2 แต่ฉันใช้มาหลายปีแล้ว มันเป็นเรื่องการดำเนินการ GUI ที่คุณถามหาและสามารถใช้ได้ที่นี่