Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Anleitung Microsoft Windows Netzwerk

Anmeldestatus von Benutzern im Active Directory speichern

Mitglied: colinardo

colinardo (Level 5) - Jetzt verbinden

09.09.2013, aktualisiert 10.10.2014, 10975 Aufrufe, 2 Kommentare, 9 Danke

Speichern des Anmelde-Status der Benutzer im Active-Directory


1. Beschreibung der Vorgehensweise

Wer vor der Aufgabe steht den aktuellen Status der Benutzer (aktuell angemeldet oder abgemeldet) abzufragen, fragt sich sicherlich zuerst wie und wohin speichere ich diese Daten mit einem Logon/Logoff-Script am besten. Diese Anleitung gibt einen Leitfaden zum Speichern dieser Informationen im Active Directory bzw. im jeweiligen Benutzerobjekt.

Der grobe Ablauf ist folgender: Die Informationen werden jeweils mit einem Anmelde- und Abmeldescript im Kommentarfeld (Tab: Rufnummern) des jeweiligen Benutzerobjekts in folgendem Format abgelegt:
(Nachtrag: Wie man ein anderes Feld für diese Informationen nutzt steht unter Punkt 5 des Beitrags)
Status#[LoggedIn|LoggedOut]#[COMPUTER DISTINGUISHED NAME]#[DATUM ZEIT]
Beispiel:
Status#LoggedIn#CN=VM7-001,CN=Computers,DC=domain,DC=local#06.09.2013 15:30:35
9c17c6e81465ee03368706bba6c863cd - Klicke auf das Bild, um es zu vergrößern

2. Vorarbeiten: Berechtigungen der Nutzer im AD setzen

Damit die Scripte die nötigen Rechte haben die Informationen ins AD zu schreiben, müssen wir den Nutzern Schreibrechte auf das Kommentarfeld ihres Benutzerobjektes gewähren.
Dazu öffnet man den ADSI-Editor auf dem Server mit WIN+R -> ADSIedit.msc. Jetzt navigiert man in den Container in denen sich die User befinden, dann Rechtsklick > Eigenschaften. Im Dialog wechselt man auf den Tab Sicherheit und wählt unten Erweitert.

6bef5156516b81b94173b5887184c884 - Klicke auf das Bild, um es zu vergrößern

Nun fügt man im Dialog einen neuen Eintrag mit dem Benutzer SELBST hinzu, wählt unter "Übernehmen für": Untergeordnete "Benutzer"-Objekte aus, setzt einen Haken bei Zulassen für "Kommentar" schreiben .
Damit erben alle Benutzerobjekte in diesem Container das Recht ihr eigenes Kommentar zu aktualisieren, was für die Scripte benötigt wird. Diesen Vorgang wiederholt man für die Container oder einzelner Benutzer dessen Status man im AD veröffentlichen möchte.

bb5002fdefaa61af5695d7699f6c808f - Klicke auf das Bild, um es zu vergrößern

3. An- und Abmeldeskripte

Nun setzt man in den GPOs der entsprechenden User folgende An- und Abmeldescripte (VBS)

a) Anmeldescript

01.
On Error Resume Next 
02.
Set objSysInfo = CreateObject("ADSystemInfo")  
03.
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)  
04.
objUser.put "info","Status#LoggedIn#" & objSysInfo.Computername & "#" & Date() & " " & Time() 
05.
objUser.SetInfo

b) Abmeldescript

01.
On Error Resume Next 
02.
Set objSysInfo = CreateObject("ADSystemInfo")  
03.
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)  
04.
objUser.put "info","Status#LoggedOut#" & objSysInfo.Computername & "#" & Date() & " " & Time() 
05.
objUser.SetInfo
Nach dem routinemäßigen Aktualisieren der GPOs, sollten ab jetzt die An- und Abmeldevorgänge im Benutzerobjekt korrekt hinterlegt werden.
Nun nützen einem die Informationen wenig wenn man sie nicht wieder mit einem Script nutzen kann. Dazu habe ich hier eine Powershell-Funktion geschrieben die diese Daten im AD abfragt und so für Automatisierungsaufgaben nutzbar macht:

4. Abfragen der Status-Daten via Script:

Powershell-Script

01.
param( 
02.
    [Parameter(mandatory=$true)][string]$baseDN, 
03.
    [Parameter()][string]$filter = "*" 
04.
05.
    $objUserList = @() 
06.
    $objSearch = New-Object System.DirectoryServices.DirectorySearcher  
07.
    $objSearch.PageSize = 100000 
08.
    $objSearch.Filter = "(&(objectCategory=User)(objectCategory=Person)(info=*#*#*#*))" 
09.
    $objSearch.SearchRoot = "LDAP://$baseDN"  
10.
    $users = $objSearch.FindAll()  
11.
    foreach ($user in $users) {  
12.
    	$itm = $user.GetDirectoryEntry() 
13.
        $username = $itm.SamAccountName  
14.
        $info = $itm.info.toString()     
15.
        $details = $info.Split("#") 
16.
	$userState = $details[1] 
17.
	$userComputer = $details[2] 
18.
	$userTime = $details[3] 
19.
	$objUserList += new-object PSObject -Property @{"Benutzer" = $userName;"Status" = $userState;"Computer" = $userComputer;"Zeit" = $userTime} 
20.
21.
    $objUserList | ?{$_.Benutzer -like $filter} | select Benutzer,Status,Computer,Zeit
Dass Script speichert ihr dann mit der Endung *.ps1, z.B. als Show-UserState.ps1.

Das Script bietet folgende Möglichkeiten:

Beispiel 1: Den Status des Benutzers hmustermann in der OU Vertrieb abfragen
01.
.\Show-UserState.ps1 -baseDN "OU=Vertrieb,dc=domain,dc=local" -filter "hmustermann"
Beispiel 2: Den Status aller Nutzer der Domain anzeigen lassen
01.
.\Show-UserState.ps1 -baseDN "dc=domain,dc=local"
Die Daten werden als Powershell-Objekte ausgegeben dessen Eigenschaften wie "Benutzername,Status,Computer,Zeit" auch separat abgefragt werden können.

Beispiel zum Abfragen des Status für den Benutzer hmustermann
01.
(.\Show-UserState.ps1 -baseDN "dc=domain,dc=local" -filter "hmustermann").Status
Dies gibt dann entweder LoggedIn oder LoggedOut aus.

Hinweis: Es werden natürlich nur die User von der Funktion aufgelistet bei denen ein entsprechend formatierter Eintrag im Kommentarfeld vorhanden ist. D.h die User müssen sich mindestens einmal angemeldet haben.

5. Nutzung eines anderen AD-Feldes für die Speicherung der Informationen

Ist man in der Situation das man ein anderes Feld für die Hinterlegung dieser Informationen nutzen möchte oder muss, kann dies wie folgt geändert werden:

Zuerst müssen wir die Schreib-Berechtigungen wie bereits oben beschrieben auf das jeweilige Feld setzen welches wir dafür nutzen wollen. Als Beispiel wähle ich das frei belegbare Attribut extensionAttribute10

Zur Info: Möchte man ein eigenes Attributes dafür erstellen kann dies in folgender Schritt-für-Schritt Anleitung nachgelesen werden: Erstellen eines neuen Attributes für Benutzerobjekte im Active Directory Schema

447cf73ca90541eaf12d56c65ab3fa9b - Klicke auf das Bild, um es zu vergrößern

Dann muss das AD-Feld in den An- und Abmeldescripten jeweils in Zeile 4 der Scripte angepasst werden:
Beispiel für das Logon-Script und der Nutzung des AD-Feldes extensionAttribute10
objUser.put "extensionAtribute10","Status#LoggedIn#" & objSysInfo.Computername & "#" & Date() & " " & Time() 
Für das Powershell-Script muss dann noch die Zeile 14 des Scriptes durch diese ersetzt werden
$info = $itm.extensionAttribute10.toString() 

6. Hinweise

Was man natürlich beachten sollte ist, das wenn der PC eines Users abstürzt und kein Abmeldevorgang stattgefunden hat auch die Informationen im AD nicht aktuell sind bzw. erst beim nächsten Anmelden wieder aktualisiert werden. Diese Situation ließe sich aber mit einer zusätzlichen PING-Prüfung des zuletzt geloggten PCs beheben.

Selbstverständlich muss die Frage des Datenschutzes dieser Informationen im eigenen Unternehmen geklärt sein bevor man dies so umsetzt.

Hoffe diese Anleitung nützt dem ein oder anderen bei der Realisierung seines Projektes

Grüße @colinardo

Updates
DatumBeschreibung
19.08.2014 Powershell-Funktion für die Verwendung ohne AD-Modul umgeschrieben
Mitglied: Sheogorath
15.11.2013, aktualisiert um 20:34 Uhr
Hallöchen,

Super Arbeit!! Gefällt mir sehr gut, die Idee und auch die Art der Umsetzung. Nur eine Sache würde ich ändern: Du nutzt den Kommentar dafür, aber dieser ist in manchen Firmen belegt durch andere Informationen. Ich würde also vorschlagen, dass man das Ganze auf einen "benutzerdefinierten Wert" legt, diesen kann man dann zwar nicht direkt in der Standard-AD-Übersicht anschauen, aber per Script, macht es keinen Unterschied.

Gruß
Chris
Bitte warten ..
Mitglied: colinardo
15.11.2013, aktualisiert 25.11.2013
Hallo Chris,
schön das es dir gefällt! Hatte hier im Beispiel das Kommentarfeld gewählt damit auch User die nicht so erfahren sind, und die keine Abfrage via Script machen, dies in den Eigenschaften des Userobjektes manuell nachschauen können. Das ändern auf ein benutzerdefiniertes Feld ist ja kein Hexenwerk, werde es aber bei Zeiten hier noch nachpflegen...

Schönes Wochenende
Uwe

--edit 15.11.2013 21:26 -- Beitrag um die Nutzung eines anderen Attributes ergänzt.
Bitte warten ..
Ähnliche Inhalte
Windows Server
Exchange 2010 Active Directory und Windows Server 2016
Erfahrungsbericht von Herbrich19Windows Server4 Kommentare

Hallo, Ich möchte mal ein wenig drüber berichten wie mein Netzwerk funktioniert. Zum Setup, ich habe ein Windows Server ...

SAN, NAS, DAS
Speicher - Ich brauche mehr Speicher
Information von Penny.CilinSAN, NAS, DAS33 Kommentare

Grade im Newsticker von Heise gefunden: 14-TByte-Festplatte mit Helium und SMR von HGST So, dann fange ich mal an ...

Windows Server
Erstellen von benutzerdefinierten MMC-Konsolen für delegierte Aufgaben im Active Directory
Anleitung von colinardoWindows Server2 Kommentare

Einleitung Wenn man die Rechte für bestimmte Administrative Aufgaben an andere Mitarbeiter (via Delegation/Objektverwaltung zuweisen) vergibt möchte man zumeist ...

Exchange Server
Exchange kein Kontakt zum DC und Active Directory Event ID 2805 und 4027
Erfahrungsbericht von MvinogradacExchange Server

Hallo Zusammen, heute konnte ich bei meinem Exchangeserver 2013 keine Dienste starten. Folgende Fehler fand ich im Ereignis Log ...

Neue Wissensbeiträge
Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 StundeDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 6 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
Frage von a-za-zNetzwerkmanagement13 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk10 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS10 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Router & Routing
Firewall Homeoffice
Frage von leon123Router & Routing6 Kommentare

Hallo zusammen, ich möchte meine beiden Rechner von der Firma vom Heimbereich abtrennen. Die Fritzbox kann leider nur den ...