AD Anmeldung per Batch auslesen
Hallo Batch Spezies
folgende Frage an Euch...
Ich möchte gerne eine Lösung finden, die es mir ermöglicht,
bestimmte AD Userkonten zu protokollieren.
Dieses Protokoll soll mir dann per Mail zugesand werden.
Also z.b.
User otto meldet sich Montag morgen mit seinem AD Konto
an der Domäne an.
Wenn die Anmeldung erfolgreich war, soll es als Information an
eine bestimmte Email Adresse verschickt werden.
Schön wäre auch, wenn ich nicht nur des Userkontos, evtl auch noch das Computerkonto
loggen lassen könnte.
Danke für Eure Hilfe...
P.S. sollte es per Batch nicht gehen, so wäre ich für jede andere Lösung auch dankbar...
mfg
matobo
folgende Frage an Euch...
Ich möchte gerne eine Lösung finden, die es mir ermöglicht,
bestimmte AD Userkonten zu protokollieren.
Dieses Protokoll soll mir dann per Mail zugesand werden.
Also z.b.
User otto meldet sich Montag morgen mit seinem AD Konto
an der Domäne an.
Wenn die Anmeldung erfolgreich war, soll es als Information an
eine bestimmte Email Adresse verschickt werden.
Schön wäre auch, wenn ich nicht nur des Userkontos, evtl auch noch das Computerkonto
loggen lassen könnte.
Danke für Eure Hilfe...
P.S. sollte es per Batch nicht gehen, so wäre ich für jede andere Lösung auch dankbar...
mfg
matobo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 150511
Url: https://administrator.de/forum/ad-anmeldung-per-batch-auslesen-150511.html
Ausgedruckt am: 22.12.2024 um 03:12 Uhr
10 Kommentare
Neuester Kommentar
Tach!
Ich hab das mit Kix realisiert. geht prima!
Hier das Skript (hab ich übrigens über das Forum gefunden, einfach mal danach suchen!)
Skriptanfang:
SETCONSOLE("hide")
SETCONSOLE("maximized")
SETTITLE("Anmeldeskript für Meine Domäne")
;
; Variablen deklarieren
;
$FileServer="192.168.0.1"
; ### Name des Servers auf welchem sich die Freigaben befinden
; ### alternativ kann auch natürlich auch eine IP-Adresse angegeben werden
;
$ProtokollServer="192.168.0.1"
; ### Name des Servers auf welchem die Freigabe für die Dokumentation
; ### der An- und Abmeldungen sowie der Rechner Infos liegt
;
$PrintServer="192.168.0.1"
; ### Name des Servers auf welchem (falls vorhanden) die Drucker
; ### eingerichtet und freigegeben sind die verbunden werden sollen
;
; *
; Hardware Informationen auslesen
; *
;
; ### Ausgabe auf die Datei "Rechnername_info.txt" umleiten anstelle des Bildschirmes
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\"+@Hostname+"_info.txt" ,1)
;
; ### Ab jetzt werden alle Printanweisungen in die Datei "Rechnername_info.txt" ausgegeben
? "Stand "@DATE" - "@TIME
? ""
? "* Rechner Information *"
?"NetBIOS Name: "@WKSTA
?"Letzter Login von: "@USERID
?"OS: "@PRODUCTTYPE" with "@CSD
?"CPU Modell: " @cpu
?"CPU Takt: "@MHZ " MHz"
?"Speicher: "MemorySize(0)" MB"
?"IP Adresse: " @ipaddress0
?"IP Adresse: " @ipaddress1
?"MAC Adresse: "@ADDRESS
?""
;
:Login
;
;
; Login Informationen pro User
;
;
; ### hier wird die Ausgabe wieder auf die Protokoll Datei für den jeweiligen Tag umgeleitet
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\Anmeldungen " + @year + "."+ @monthno + "." + @mdayno + ".txt" ,0)
;
; ### jetzt wird geprüft ob die Datei bereits existiert, wenn ja wird der Header nicht noch einmal in die Datei geschrieben
; ### da dieser bereits vorhanden ist.
$logExist=Exist("\\"+$ProtokollServer+"\login$\Anmeldungen " + @year + "."+ @monthno + "." + @mdayno + ".txt")
if $logExist = 0
? "+-------------------------------------------------------------------------------------------------+"
? "¦Benutzername ¦ Client ¦ Datum ¦ Uhrzeit ¦ Anmeldeserver ¦ i=login o=logout¦"
? "¦-------------+----------------------+------------+----------+------------------+-----------------¦"
endif
$user = @userid+left(" ",(13-len(@userid)))
$client = @wksta+left(" ",(20-len(@WKSTA)))
$lserver = @lserver+left(" ",(18-len(@LSERVER)))
$lserver = right($lserver,(len($lserver)-2))
? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ i ¦"
Exit
</font>
Den Code <?"IP Adresse: " @ipadress0> mit diesem ersetzen.
Skriptende:
Es kommen dann 2 Dateien raus, deren Inhalt ungefär so aussehen:
¦mueller ¦ verwaltung02 ¦ 2010/09/07 ¦ 06:36:35 ¦ ANMELDESERVER ¦ i ¦
¦maier ¦ lager04 ¦ 2010/09/07 ¦ 08:02:01 ¦ ANMELDESERVER ¦ i ¦
(Das i am Ende steht für "Log in"!)
und die PC-Info:
Stand 2010/06/15 - 16:55:24
Letzter Login von: mueller
OS: Windows XP Professional with Service Pack 2
CPU Modell: Intel(R) Celeron(R) CPU 2.80GHz
CPU Takt: 2796 MHz
Speicher: 1014 MB
IP Adresse: 192.168. 0.119
MAC Adresse: 001389DF73F1
Den Inhalt der Dateien oder die Dateien selbst kann man dann ja zB. mit "blat" per Mail versenden!
Grüße, Tom
Ich hab das mit Kix realisiert. geht prima!
Hier das Skript (hab ich übrigens über das Forum gefunden, einfach mal danach suchen!)
Skriptanfang:
SETCONSOLE("hide")
SETCONSOLE("maximized")
SETTITLE("Anmeldeskript für Meine Domäne")
;
; Variablen deklarieren
;
$FileServer="192.168.0.1"
; ### Name des Servers auf welchem sich die Freigaben befinden
; ### alternativ kann auch natürlich auch eine IP-Adresse angegeben werden
;
$ProtokollServer="192.168.0.1"
; ### Name des Servers auf welchem die Freigabe für die Dokumentation
; ### der An- und Abmeldungen sowie der Rechner Infos liegt
;
$PrintServer="192.168.0.1"
; ### Name des Servers auf welchem (falls vorhanden) die Drucker
; ### eingerichtet und freigegeben sind die verbunden werden sollen
;
; *
; Hardware Informationen auslesen
; *
;
; ### Ausgabe auf die Datei "Rechnername_info.txt" umleiten anstelle des Bildschirmes
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\"+@Hostname+"_info.txt" ,1)
;
; ### Ab jetzt werden alle Printanweisungen in die Datei "Rechnername_info.txt" ausgegeben
? "Stand "@DATE" - "@TIME
? ""
? "* Rechner Information *"
?"NetBIOS Name: "@WKSTA
?"Letzter Login von: "@USERID
?"OS: "@PRODUCTTYPE" with "@CSD
?"CPU Modell: " @cpu
?"CPU Takt: "@MHZ " MHz"
?"Speicher: "MemorySize(0)" MB"
?"IP Adresse: " @ipaddress0
?"IP Adresse: " @ipaddress1
?"MAC Adresse: "@ADDRESS
?""
;
:Login
;
;
; Login Informationen pro User
;
;
; ### hier wird die Ausgabe wieder auf die Protokoll Datei für den jeweiligen Tag umgeleitet
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\Anmeldungen " + @year + "."+ @monthno + "." + @mdayno + ".txt" ,0)
;
; ### jetzt wird geprüft ob die Datei bereits existiert, wenn ja wird der Header nicht noch einmal in die Datei geschrieben
; ### da dieser bereits vorhanden ist.
$logExist=Exist("\\"+$ProtokollServer+"\login$\Anmeldungen " + @year + "."+ @monthno + "." + @mdayno + ".txt")
if $logExist = 0
? "+-------------------------------------------------------------------------------------------------+"
? "¦Benutzername ¦ Client ¦ Datum ¦ Uhrzeit ¦ Anmeldeserver ¦ i=login o=logout¦"
? "¦-------------+----------------------+------------+----------+------------------+-----------------¦"
endif
$user = @userid+left(" ",(13-len(@userid)))
$client = @wksta+left(" ",(20-len(@WKSTA)))
$lserver = @lserver+left(" ",(18-len(@LSERVER)))
$lserver = right($lserver,(len($lserver)-2))
? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ i ¦"
Exit
</font>
Ende Login.kix<<
Logoff.kix<<-- Ab hier den Inhalt markieren und in die Datei logoff.kix kopieren.
; *
; Logoff Informationen pro User
; *
;
$result=ReDirectOutput ("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt" ,0)
$logExist=Exist("\\"+$ProtokollServer+"\login$\Anmeldungen " + @YEAR + "."+ @MONTHNO + "." + @MDAYNO + ".txt")
if $logExist = 0
? "+-------------------------------------------------------------------------------------------------+"
? "¦Benutzername ¦ Client ¦ Datum ¦ Uhrzeit ¦ Anmeldeserver ¦ i=login o=logout¦"
? "¦-------------+----------------------+------------+----------+------------------+-----------------¦"
endif
$user = @userid+left(" ",(13-len(@userid)))
$client = @WKSTA+left(" ",(20-len(@WKSTA)))
$lserver = @LSERVER+left(" ",(18-len(@LSERVER)))
$lserver = right($lserver,(len($lserver)-2))
? "¦"$user"¦ "$client" ¦ "@DATE" ¦ "@TIME" ¦ "$lserver" ¦ o ¦"
Ende Logoff.kix<<
Funktion zum entfernen der Leerzeichen in der IP Adresse<<
Den Code <?"IP Adresse: " @ipadress0> mit diesem ersetzen.
; ### Dieser Code entfernt Leerzeichen aus der @IPADRESS0
$a = 0
$Myarray = Split(@IPADDRESS0 , " ")
For Each $Element In $MyArray
if $a = 0
$IP0 = $Element
endif
if $a= 1
$IP1= $Element
endif
if $a= 2
$IP2= $Element
endif
if $a = 3
$IP3 = $Element
endif
if $a = 4
$IP4 = $Element
endif
if $a = 5
$IP5 = $Element
endif
if $a = 6
$IP6 = $Element
endif
if $a= 7
$IP7 = $Element
endif
if $a= 8
$IP8 = $Element
endif
if $a = 9
$IP9 = $Element
endif
if $a = 10
$IP10 = $Element
endif
$a = $a + 1
Next
?"IP Adresse: " + +$IP0 + $IP1 + $IP2 + $IP3 + $IP4 + $IP5 + $IP6 + $IP7 + $IP8 + $IP9 + $IP10
Es kommen dann 2 Dateien raus, deren Inhalt ungefär so aussehen:
¦mueller ¦ verwaltung02 ¦ 2010/09/07 ¦ 06:36:35 ¦ ANMELDESERVER ¦ i ¦
¦maier ¦ lager04 ¦ 2010/09/07 ¦ 08:02:01 ¦ ANMELDESERVER ¦ i ¦
(Das i am Ende steht für "Log in"!)
und die PC-Info:
Stand 2010/06/15 - 16:55:24
- Rechner Information *
Letzter Login von: mueller
OS: Windows XP Professional with Service Pack 2
CPU Modell: Intel(R) Celeron(R) CPU 2.80GHz
CPU Takt: 2796 MHz
Speicher: 1014 MB
IP Adresse: 192.168. 0.119
MAC Adresse: 001389DF73F1
Den Inhalt der Dateien oder die Dateien selbst kann man dann ja zB. mit "blat" per Mail versenden!
Grüße, Tom
Anmeldungen loggen ist eh evtl. schon eingestellt. Führ zunächst mal ein rsop.msc am DC aus, um das rauszufinden. Ist es nicht eingestellt, Verändere in einer auf DCs angewendeten GPO die Überwachungseinstellungen dahingehend.
Resultat ist, dass die Anmeldungen nun im Sicherheitsprotokoll des Servers auflaufen. Dort kannst Du (bei 2008 Server) Aktionen an bestimmte Events anhängen (der Eventviewer erstellt somit geplante Tasks, die eventgetriggert sind). Man rechtsklickt also so ein Event und wählt "attach task to this event". Bei 2003 Server muss man die eventtriggers.exe (von der Kommandozeile) bemühen, um selbiges zu erreichen.
Resultat ist, dass die Anmeldungen nun im Sicherheitsprotokoll des Servers auflaufen. Dort kannst Du (bei 2008 Server) Aktionen an bestimmte Events anhängen (der Eventviewer erstellt somit geplante Tasks, die eventgetriggert sind). Man rechtsklickt also so ein Event und wählt "attach task to this event". Bei 2003 Server muss man die eventtriggers.exe (von der Kommandozeile) bemühen, um selbiges zu erreichen.
Einen eventgetriggerten Task hast Du schon wie beschrieben erstellt? Dann kannst Du den noch editieren (erweiterte Einstellungen setzen). Ich hab ein Bild dazu hochgeladen. Dort kann man auch nach Keywords wie dem Benutzernamen filtern. http://250kb.de/apc46tQ
Du hast eine genau Beschreibung erhalten. Wo bleibst Du denn stecken? Öffne den Eventviewer und nimm Dir so ein Anmeldeereignis. Dann Rechtsklick und das deutsche Pendant zu "attach task to this event" wählen. Am Ende die erweiterten Eigenschaften des Tasks anzeigen lassen und wie in der Abbildung zu sehen weitere Einstellungen konfigurieren.
eventtriggers kann zwar Event-ID-abhängig arbeiten, aber nicht nach Begriffen wie "otto" filtern - so wird das also nichts. Eine weitere Möglichkeit ist snare, eine Freeware von intersect alliance, der kann bei bestimmten keywords handeln - jedoch verschickt der keine Mails, sondern leitet events an einen Syslogserver weiter (welcher dann seinerseits daraus Mails machen müsste). Vielleicht doch lieber ThomasBergers Skript?