Antworten:
keine GUI, aber:
for /L %x in (2,1,254) do psloggedon \\172.21.0.%x
führt einen Scan von 172.21.0.2-254 durch. Sie können auch verschachteln:
for /L %z in (16,1,31) do for /L %x in (1,1,254) do psloggedon \\172.21.%y.%x
Dadurch werden die Subnetze 172.21. {16-31} .x gescannt.
Ich habe dieses Skript gefunden . Es scannt eine ganze Domain und gibt Ihnen eine schöne Ausgabe (Computername und Benutzername).
whoisloggedinwhere.bat> users.txt
@echo aus setlocal für / f "Tokens = 1" %% c in ('net view / domain: "% USERDOMAIN%" ^ | Findstr / L / C: "\\"') do ( für / f "Tokens = *" %% u in ('PsLoggedOn -L %% c ^ | find / i "% USERDOMAIN% \"') do ( call: report %% c "%% u" ) ) endlokal gehe zu: EOF :Bericht Arbeit einstellen =% 1 setze comp =% work: ~ 2% setze Benutzer =% 2 set user =% user: "=% call set user = %% user: *% USERDOMAIN% \ = %% @echo% comp %% user%
Dieses Skript verwendet PsLoggedOn .
Versuchen nbtstat -a <computername>
Ich schreibe den Benutzernamen mithilfe eines Anmeldeskripts in die Computerbeschreibungseigenschaft, mit dem ich alles in AD-Benutzer und -Computer anzeigen, danach suchen usw. kann. Sehr praktisch.
Wenn auf den Servern Terminaldienste ausgeführt werden, können Sie mit dem Terminaldienstemanager die Server in einer Domäne anzeigen und festlegen, wer bei ihnen angemeldet ist. Es ist GUI und kann unter gefunden werden
Start -> Administrative Tools -> Terminal Services Manager
Sie können einen Benutzer erkennen, der lokal an einer Workstation angemeldet ist, indem Sie WMI über das folgende PowerShell-Skript abfragen. Es gibt den Namen des lokal angemeldeten Benutzers oder die leere Zeichenfolge zurück.
function logged_in($host_name) {
(get-wmiobject -class Win32_ComputerSystem -computername $host_name `
-namespace "root\CIMV2").UserName
}
Ich bin nicht sicher, woher ich es habe, aber ich habe diesen Code herumliegen, der Benutzer auf einem Computer zeigt. Sie können dies für jede Schleife in eine einschließen, um eine Reihe von Maschinen zu scannen. Ich würde sagen, wenn Sie wissen möchten, wer an einem System angemeldet ist, ist es am einfachsten, die Anmeldeüberwachung zu aktivieren und das Sicherheitsprotokoll anzuzeigen (oder abzufragen). Hier ist der Code, um zu sehen, wer gerade aktiv ist:
' 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
'=======================================================================
Ich bin überrascht, dass noch niemand logonon2 erwähnt hat, das ich seit einigen Jahren benutze. Es ist die von Ihnen angeforderte GUI-Implementierung, die hier verfügbar ist .