Jump to content

AD-Domäne - Wissen wer gerade angemeldet ist


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

HI,

 

ich hab gestern auch ein bisschen gescriptet. Ich werde mal die Ergebnisse hier posten. Vom ersten Blick her dürfte das ähnlich, wie bei Cyquest sein, nur mit Access...

 

 

Die erste heißt createDataBase.vbs, sie erstellt die Access DB, der Pfad muss angepasst werden:

Dim objCon
Const dbFilePath = "c:\logon.mdb"

'DB anlegen
Set objCon = CreateObject("ADOX.Catalog")
objCon.Create "Provider =Microsoft.Jet.OLEDB.4.0; " & "Data Source = " & dbFilePath

'Tabelle anlegen
Set objCon = CreateObject("ADODB.Connection")

objCon.Open _
   "Provider= Microsoft.Jet.OLEDB.4.0; " & "Data Source= " & dbFilePath 

objCon.Execute "CREATE TABLE LogonTable(" & _
   "UserName TEXT(50) ," & _
   "isLoggedOn BIT ," & _
   "ComputerName TEXT(50) ," & _
   "LastTimeStamp DATETIME)" 

objCon.Close

Link zu diesem Kommentar

Die zweite ist die writelogon.vbs, die muss in die GPO eingebaut werden. Dazu muss ein Argument übergeben werden. Für die Anmeldung "logon", für die Abmeldung "logoff".

 

' Const
Const adLockOptimistic = 3
Const adOpenStatic = 3
Const dbFilePath = "c:\logon.mdb"


Dim userName, computerName
Dim wshNetWork, objCon, isLoggedOn, objRS
Dim SQLCmdString

'Variablen setzen
Set wshNetWork = CreateObject("WScript.Network")
userName = wshNetWork.UserName
computerName = wshNetWork.ComputerName

'IsLoggedOn auf True oder False
If WScript.Arguments.Unnamed.Item(0) = "logon" Then
isLoggedOn = True 			
ElseIf WScript.Arguments.Unnamed.Item(0) = "logoff" Then 
isLoggedOn = False
End If

'Abfrage, ob Eintrag schon vorhanden
Set objCon = CreateObject("ADODB.Connection")
Set objRS = CreateObject("ADODB.Recordset")

objCon.Open "Provider= Microsoft.Jet.OLEDB.4.0; " & "Data Source= " & dbFilePath 

objRS.Open "SELECT * FROM LogonTable WHERE UserName='" & userName & "' AND " & _
	"ComputerName='" & computerName & "'", objCon, adOpenStatic, adLockOptimistic


'Commandstring basteln...
If objRS.RecordCount = 0 Then		'Neuer Eintrag

With objRS
	.AddNew
	.Fields("UserName") = userName
	.Fields("ComputerName") = computerName
	.Fields("isLoggedOn") = isLoggedOn
	.Fields("LastTimeStamp") = Now
	.Update
End With

Else

	'Gefundener Datensatz wird geändert		
	With objRS
		.Fields("isLoggedOn") = isLoggedOn
		.Fields("LastTimeStamp") = Now
		.Update		
	End With

End If

objRS.Close
objCon.Close

Link zu diesem Kommentar

Und hier ist noch eine namens Auswertung.hta. Mit dieser kann man Auswertungen auf die Access machen.

 

Erster Teil:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
	<TITLE>Logon Logger</TITLE>
	<HTA:APPLICATION  
SYSMENU="yes" SINGLEINSTANCE="yes" SHOWINTASKBAR="yes"/>

<SCRIPT language=VBScript>

Sub checkLogged

	If chkLogged.checked = True Then
		sortOrder(2).disabled = True
		If sortOrder(2).checked = True Then
			sortOrder(0).checked =  True
		End If
	Else
		sortOrder(2).disabled = False
	End If


End Sub


Sub openWindow

Const dbFilePath = "c:\logon.mdb"
Const adOpenForwardOnly = 0
Const adLockReadOnly = 1

Dim commandText, objRS, objCon, objIE, objDoc


	'Auswertung der Radiobuttons choice
	If choice(0).checked Then
		If txtUser.Value = "" Then
			MsgBox "Bitte Benutzer eingeben!"
			Exit Sub
		Else
			commandText = "Select * From LogonTable WHERE UserName='" & txtUser.Value & "'"
		End If

	ElseIf choice(1).checked Then
		If txtComputer.Value = "" Then
			MsgBox "Bitte Computer eingeben!"
			Exit Sub
		Else
			commandText = "Select * From LogonTable WHERE ComputerName='" & txtComputer.Value & "'"
		End If

	ElseIf choice(2).checked Then
		commandText = "Select * From LogonTable WHERE Format(LastTimeStamp, 'DD.MM,YYYY') = Format(Now, 'DD.MM,YYYY')"
	ElseIf choice(3).checked Then
		commandText = "Select * From LogonTable"
	End If

	'Auswertung der Checkbox chkLogged
	If chkLogged.checked Then
		If choice(3).checked Then
			commandText = commandText & " WHERE isLoggedOn = TRUE"
		Else
			commandText = commandText & " AND isLoggedOn = TRUE"			
		End If
	End If


	'Auswertung der Sortierung
	If sortOrder(0).checked Then
		commandText = commandText & " ORDER BY UserName"
	ElseIf sortOrder(1).checked Then
		commandText = commandText & " ORDER BY ComputerName"			
	ElseIf sortOrder(2).checked Then
		commandText = commandText & " ORDER BY isLoggedOn"			
	ElseIf sortOrder(3).checked Then
		commandText = commandText & " ORDER BY LastTimeStamp"			
	End If


	'Recordset holen	
	Set objCon = CreateObject("ADODB.Connection")
	Set objRS = CreateObject("ADODB.Recordset")
	objCon.Open "Provider= Microsoft.Jet.OLEDB.4.0; " & "Data Source= " & dbFilePath
	objRS.Open commandText, objCon, adOpenForwardOnly, adLockReadOnly

	'Antwort bauen
	If objRS.RecordCount = 0 Then
		MsgBox "Keine Datensätze für ihre Suchkriterien gefunden"
	Else
		Dim htmlResult

		htmlResult = "<table  border=1><thead><tr><th>Benutzer</th><th>Computer</th><th>Angemeldet</th><th>Uhrzeit</th></tr></thead>"
		While Not objRS.EOF

			With objRS
				htmlResult = htmlResult & "<tr><td>" & .Fields("UserName") & "</td><td>" & .Fields("ComputerName") & "</td><td>" _
				& .Fields("isLoggedOn") & "</td><td>" & .Fields("LastTimeStamp") & "</td>" 
				.MoveNext
			End With

		Wend
		htmlResult = htmlResult & "</table>"


		'Neues Fenster aufrufen
		Set objIE = CreateObject("InternetExplorer.Application")
		objIE.Navigate("about:blank")
		objIE.ToolBar = 0
		objIE.StatusBar = 0
		objIE.Document.Title = "Ergebnis"
		Set objDoc = objIE.Document.Body
		objDoc.InnerHTML = htmlResult
		objIE.Visible = True

	End If		

	objRS.Close
	objCon.close


End Sub


</SCRIPT>


</HEAD>

Link zu diesem Kommentar

Und hier der 2. Teil:

 

<BODY>
<h1>LogonLogger</h1>
Bitte Anzeige auswählen:<br /><hr />
<table width="450" border="0">
	<tr>
		<td width="50%" valign="top"><input type="radio" name="choice" value="User"> Benutzer auswählen<br></td>
		<td width="50%" valign="top"><input type="text" name="txtUser" size="30"></td>
	</tr>
	<tr>
		<td width="50%" valign="top"><input type="radio" name="choice" value="Computer"> Computer auswählen<br></td>
		<td width="50%" valign="top"><input type="text" name="txtComputer" size="30"></td>
	</tr>
	<tr>
		<td width="50%" valign="top"><input type="radio" name="choice" value="Today"> Heutige Einträge anzeigen<br></td>
		<td width="50%" valign="top"></td>
	</tr>
	<tr>
		<td width="50%" valign="top"><input type="radio" name="choice" value="All" checked> Alle Einträge anzeigen<br></td>
		<td width="50%" valign="top"></td>
	</tr>

</table>

<br /><br /><input type="checkbox" name="chkLogged" value="1" onClick="CheckLogged"> Nur angemeldete
<br /><br />Sortieren nach:
<br /><input type="radio" name="sortOrder" value="User">Benutzer
<br /><input type="radio" name="sortOrder" value="Computer">Computer
<br /><input type="radio" name="sortOrder" value="isLoggedOn">An-/Abgemeldet
<br /><input type="radio" name="sortOrder" value="Time">Zeit

<br /><br /><input id=openButton  class="button" type="button" value="Start" name="open_button"  onClick="OpenWindow">
</BODY>
</HTML>

 

Wenn ich heute Abend noch Zeit und Lust habe, werd ich mal sehen, ob ich die Logon-Infos auch aus dem Eventlog ziehen kann und in die DB schreiben kann.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...