schnullernase
Goto Top

Rechnername über den Usernamen finden

Hallo zusammen

Ich verwalte ein Netzwerk mit ca. 70 Rechnern und möchte nun herausfinden, an welchem Rechner sich ein bestimmter User angemeldet hat.

Kennt jemand dazu eine Möglichkeit?

Content-ID: 60015

Url: https://administrator.de/contentid/60015

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

Torsten72
Torsten72 29.05.2007 um 08:02:19 Uhr
Goto Top
der befehl heißt 'who'
blueMamba
blueMamba 29.05.2007 um 08:34:33 Uhr
Goto Top
net who?!

also unter OS/2 LAN Server gab es einen "net who" und unter lx kann man mit who auch arbeiten, doch glaube hier geht es um ein Windows Netz oder?!

Da ist das ganze schonmal gar nicht mehr so einfach, obwohl es in div. Scriptsammlungen div. Utilities dafür gibt.

face-wink
36539
36539 29.05.2007 um 08:47:29 Uhr
Goto Top
Hallo,
gib doch beim nächsten Mal wenigstens einige Infos zu verwendeten Betriebssystemumgebung/en!
Für Windows siehe PsLoggedOn http://www.microsoft.com/germany/technet/sysinternals/utilities/PsTools ...
ansonsten http://www.google.de/search?hl=de&q=angemeldete+User+im+Netzwerk+er ...

gruß
blueMamba
blueMamba 29.05.2007 um 08:58:35 Uhr
Goto Top
hehe 'lol'

also ich glaube, dass ist auch nicht so das Richtige was er sucht...

Wie schon erwähnt gab es unter OS/2 einen entspr. Befehl, war ganz gut, um herauszufinden an welchem Rechner ein User überhaupt angemeldet ist, doch Windows bzw. eine in Win-AD ist da eben etwas anders.

Hier muss man ein klein wenig tricksen, denn da Clients und Benutzer quasi als eigenständige und unabhängige Objekte betrachtet werden, ist das nicht mehr so einfach.
Ich habe mal in irgend einer Scriptsammlung etwas dazu gelesen, mal gucken ob ich's noch finde.
bastla
bastla 29.05.2007 um 20:48:17 Uhr
Goto Top
... und falls blueMamba nicht erfolgreich sein sollte, könnte man diese beiden Quellen kombinieren:

Zielsucher - WMI-Abfragen auf mehreren Rechnern ausführen
WMI - Who is Logged on at That Computer?

Grüße
bastla
Biber
Biber 29.05.2007 um 20:56:59 Uhr
Goto Top
och menno, nun quält Euch nicht....

Seit heute morgen um 7.55h liebäugele ich mit dem Gedanken, diesen Thread erstmal geschlossen zu halten,
bis die Frage redaktionell überarbeitet ist.

Ohne Angabe von Betriebssystem und gibts/gibts kein AD lässt sich doch nicht sinnvoll antworten.

Wenn nun seine Ansage kommt:
"joaa, das war so ne Frage bei unserer Amiga-Lan-Party am Samstag, wo ich den Adminhut aufhatte.."

@Schnullernase
Bitte mache es nicht so spannend und lass hier nicht die fähigsten Köpfe des Forums stundenlang im Nebel stochern.
Gib ma' Butter bei die Fische, wie man/frau bei uns sacht...

Gruß
Biber
Schnullernase
Schnullernase 30.05.2007 um 08:52:51 Uhr
Goto Top
Sorry Leute, hatte gestern viel zu tun.

Es handelt sich um ein Windows Netz, Server hat Win2003, Arbeitsplätze WinXP.

Ich hatte auch schon daran gedacht, das Tool AdvancedRemoteInfo zu nutzen, leider sind die Remote-Funktionen standartmäßig nicht aktiviert.

Werde mir wohl die Arbeit machen, die Rechner passend für ARI zu konfigurieren.

Vielen Dank für eure Antworten.
bastla
bastla 30.05.2007 um 14:38:00 Uhr
Goto Top
Hallo Schnullernase!

... hatte gestern viel zu tun.
Wer nicht - darum oben nur mein Vorschlag, aber noch nicht die Umsetzung. Inzwischen hätte ich aber etwas zum Testen anzubieten:
If WScript.Arguments.Count = 0 Then
	strUserName = InputBox("Gesuchter Username?")  
Else
	strUserName = WScript.Arguments(0)
End If
If strUserName = "" Then WScript.Quit(1)  
strUserName = UCase(strUserName)

strSQL = "SELECT name " _  
   & "FROM 'LDAP://DC=firma,DC=de' " _  
   & "WHERE objectClass='computer' "  

' ADO-Verbindung herstellen  
Set objDom = CreateObject("ADODB.Connection")  
objDom.Open "Provider=ADsDSOObject;"  

' Suche ausführen  
Set objRS = objDom.Execute(strSQL)

objRS.MoveFirst
Do Until objRS.EOF
	strComputer = objRS("name")  
	If IsOnline(strComputer) Then
		Set objWMIService = GetObject("winmgmts:" _  
			& "{impersonationLevel=impersonate}!\\" _  
			& strComputer & "\root\cimv2")  
			
		Set colComputer = objWMIService.ExecQuery _
			("Select * from Win32_ComputerSystem")  

		For Each objComputer in colComputer
			If Not IsNull(objComputer.UserName) Then
				strLogonUser = Split(objComputer.UserName,"\")  
				strLoggedonUser = UCase(Trim(strLogonUser(1)))
			
				If strUserName = strLoggedOnUser Then 
					WScript.Echo strLoggedOnUser & " is logged on at " _  
						& strComputer
				End If
			End If
		Next
	End If
	objRS.MoveNext
Loop
WScript.Echo "Suche nach User " & strUserName & " beendet."  

Function IsOnline(PCName)
' Läuft nur unter Windows XP, Windows Server 2003 und Nachfolgern  
    IsOnline=False
    Set objPing = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}"). _  
    ExecQuery("select ReplySize from " _  
    & "Win32_PingStatus where address= '" _  
    & PCName & "'")  

    For Each objStatus In objPing
        If Not IsNull (objStatus.ReplySize) Then
           IsOnline = True
        Else
           IsOnline=False
        End If
    Next
End Function
Die entscheidenden Teile stammen aus den oben genannten Quellen.

Die Beispielsdomäne "firma.de" in der Zeile & "FROM 'LDAP:DC=firma,DC=de' " _// ist natürlich azupassen.

Die Scriptausgaben sind derzeit auf interaktive Verwendung zugeschnitten, allerdings könnte das Script auch über Commandline/Batch gestartet werden, um zB die Ausgabe in eine Datei zu schreiben:
cscript //nologo Scriptname.vbs GesuchterUser > CompListe.txt

Grüße
bastla

[Edit] Prüfung auf angemeldeten User integriert. [/Edit]
bastla
bastla 30.05.2007 um 17:39:46 Uhr
Goto Top
Aufgrund eines Hinweises von drop_ch habe ich im obigen Script noch eine Prüfung integriert, um einen gelegentlich auftretenden Fehler in Zeile 32 zu vermeiden. Ursache des Fehlers war die Abfrage eines Computers, der zwar online, an dem jedoch kein User angemeldet war.

Grüße
bastla