Answers:
不是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“ Tokens = 1” %% c做( 在('PsLoggedOn -L %% c ^ | find / i“%USERDOMAIN%\”')中为/ f“ Tokens = *” %% u做( 致电:report %% c“ %% u” ) ) 本地 转到:EOF :报告 设置工作=%1 设定comp =%work:〜2% 设置用户=%2 设置用户=%用户:“ =% 通话设置用户= %% user:*%USERDOMAIN%\ = %% @echo%comp%%user%
该脚本使用PsLoggedOn。
我使用登录脚本将用户名写入计算机描述属性,该脚本使我可以查看“ AD用户和计算机”中的所有内容,并在其中进行搜索等等。非常便利。
如果服务器正在运行终端服务,则可以使用终端服务管理器来查看域中的服务器以及谁登录到它们。它是GUI,可以在下面找到
Start -> Administrative Tools -> Terminal Services Manager
我不确定我从哪里得到的,但是我周围放着这段代码,向用户显示了计算机上的信息。您可以将其包装在for每个循环中以扫描一堆机器。我想说的是,如果您想知道谁登录了系统,最简单的方法是打开登录审核并查看(或查询)安全日志。以下代码可查看谁在任何时刻都在工作:
' 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实现,可在此处获得。