답변:
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 서브넷을 스캔합니다.
이 스크립트를 찾았습니다 . 그것은 전체 도메인을 스캔하고 좋은 결과 (컴퓨터 이름 및 사용자 이름)를 제공합니다.
whoisloggedinwhere.bat> users.txt
@ 에코 오프 setlocal ( 'net view / domain : "% USERDOMAIN %"^ | Findstr / L / C : "\\"')에서 / f "토큰 = 1"%% c의 경우 / f "토큰 = *"%% u in ( 'PsLoggedOn -L %% c ^ | find / i "% USERDOMAIN % \"' ') 전화 :보고 %% c "%% u" ) ) 지역 고토 : EOF :보고서 작업 설정 = % 1 comp = % work 설정 : ~ 2 % 사용자 설정 = % 2 사용자 설정 = % 사용자 : "= % 통화 세트 사용자 = %% user : * % USERDOMAIN % \ = %% @echo % comp % % user %
이 스크립트는 PsLoggedOn을 사용 합니다 .
로그온 스크립트를 사용하여 컴퓨터 설명 속성에 사용자 이름을 작성하여 AD 사용자 및 컴퓨터의 모든 내용을보고 검색 할 수 있습니다. 매우 편리합니다.
어디에서 얻었는지 잘 모르겠지만이 코드를 배치하여 사용자를 컴퓨터에서 보여줍니다. 이것을 루프마다 감싸서 여러 머신을 스캔 할 수 있습니다. 누가 시스템에 로그온했는지 알고 싶다면 가장 간단한 방법은 로그인 감사를 설정하고 보안 로그를 확인 (또는 쿼리)하는 것입니다. 주어진 순간에 누가 있는지 확인하는 코드는 다음과 같습니다.
' 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
'=======================================================================