Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Active Directory: letzte Benutzer oder Workstation-Anmeldung auslesen

Frage Microsoft Windows Server

Mitglied: aufder

aufder (Level 1) - Jetzt verbinden

20.02.2006, aktualisiert 11:34 Uhr, 35967 Aufrufe, 8 Kommentare

letzte Benutzer oder Workstation-Anmeldung aus dem Active Directory auslesen

Hallo Admins!

Habe jetzt schon mehrere Foren-Einträge durchforstet, aber keiner trifft so richtig mein Problem.
Ich suche ein Programm, mit dem ich folgende Daten aus dem AD auslesen kann.
Das Tool soll am besten tabellarisch, oder in der AD-Verwaltung selbst den letzen Anmeldezeitpunkt eines Benutzers bzw.
einer Workstation anzeigen.
Ich hatte mal ein Programm, das einen zusätlichen Reiter in der AD-Verwaltung mit diesen Infos eingetragen hat, jedoch finde ich es nicht wieder. Am liebsten wäre mir aber wie beschrieben eine tabellarische Aufbereitung.
Vielen Dank im Voraus!

Gruß
Stefan
Mitglied: meinereiner
20.02.2006 um 08:45 Uhr
http://www.systemtools.com/hyena/ sollte das können. Auch sonst ist es ein tolles Tool.
In einer 2003 Domäne müsstest du deine Infos aber auch direkt über eine Abfrage in "AD Benutzer und Computer" bekommen könen.
Bitte warten ..
Mitglied: aufder
20.02.2006 um 09:05 Uhr
Leider haben wir nur eine 2000er Domäne. In HYENA und Dameware habe ich es auch schon gesucht, aber leider nichts gefunden.
Bitte warten ..
Mitglied: 25510
20.02.2006 um 09:23 Uhr
Bat-Datei anlegen:

@echo off
usrstat up | grep %1
pause
exit

Datei aus den W2k-Server-Admintools: Usrstat.exe

Den Pfad mit der bat-Datei in PATH eintragen.
Unter der Konsole kannst du mit "batdatei-name userlogin" auch von mehreren DC den Login abfragen (dauert)
Bitte warten ..
Mitglied: meinereiner
20.02.2006 um 09:41 Uhr
Ich habe noch eine ältere Version von Heyena hier und da kann ich es abrufen.

Domain Users aufrufen, rechte Maustaste "View all Users Details"
Ich musste allerdings noch in den Optionen unter Users das Häkchen bei "Show last logon/logoff information" setzen
Bitte warten ..
Mitglied: aufder
20.02.2006 um 11:29 Uhr
Super, danke! Nach dem Setzen der Optionen in HYENA bekomme ich es angezeigt. Hab mal geschaut, ob es eine Möglichkeit gibt die Informationen tabellarisch anzeigen zu lassen, aber nichts gefunden. Vielleicht kennst du eine Lösung die "letzten Anmeldezeitpunkte" in HYENA tabellarisch auf einem Blick anzeigen zu lassen?
Bitte warten ..
Mitglied: meinereiner
20.02.2006 um 11:34 Uhr
Wenn ich es bei mir mache, bekomme ich es Tabellarisch und kanns auch sortieren lassen wie ich will.
Man kann auch einen Report in Access erstellen lassen. Dazu muss man aber in den Settings unter Reporting den Pfad zu Access eingeben.
Bitte warten ..
Mitglied: problemsolver
28.01.2010 um 14:01 Uhr
Hallo,

auch wenn das Problem bzw der Thread schon älter ist, bin ich bei der Suche auf Google darauf gestoßen.

Es wird sicherlich jemanden helfen, wenn ich hier ein VB-Script poste, was mehr oder weniger zusammengeklaut und gebastelt ist, aber den Sinn und Zweck gut erfüllt bei Computern im AD. Es funktioniert sogar mit mehreren DCs.

empfohlener Aufruf: cscript <scriptname> //NoLogo > test.csv

Gruß

Markus

01.
' LastLogon.vbs 
02.
' VBScript program to determine when each computer in the domain last logged 
03.
' on. 
04.
05.
Option Explicit 
06.
 
07.
if not IsHostCscript() then 
08.
wscript.echo("Bitte mit cscript <scriptname> starten!!!") 
09.
wscript.quit 
10.
end if 
11.
 
12.
 
13.
Dim objRootDSE, strConfig, adoConnection, adoCommand, strQuery 
14.
Dim adoRecordset, objDC 
15.
Dim strDNSDomain, objShell, lngBiasKey, lngBias, k, arrstrDCs() 
16.
Dim strDN, dtmDate, objDate, objList, strUser, objList_LogonServer 
17.
Dim strBase, strFilter, strAttributes, lngHigh, lngLow 
18.
 
19.
' Use a dictionary object to track latest lastLogon for each user. 
20.
Set objList = CreateObject("Scripting.Dictionary") 
21.
objList.CompareMode = vbTextCompare 
22.
' Anmeldeserver mit abspeichern! 
23.
Set objList_LogonServer = CreateObject("Scripting.Dictionary") 
24.
objList.CompareMode = vbTextCompare 
25.
 
26.
' Obtain local Time Zone bias from machine registry. 
27.
' Die lokale Zeitzone des Rechners bestimmen, an dem dieses Script ausgeführt wird. 
28.
' Der Wert aus der Registry wird dann mit in die Berechnung des Anmeldezeitpunkts einbezogen 
29.
Set objShell = CreateObject("Wscript.Shell") 
30.
lngBiasKey = objShell.RegRead("HKLM\System\CurrentControlSet\Control\" _ 
31.
    & "TimeZoneInformation\ActiveTimeBias") 
32.
If (UCase(TypeName(lngBiasKey)) = "LONG") Then 
33.
    lngBias = lngBiasKey 
34.
ElseIf (UCase(TypeName(lngBiasKey)) = "VARIANT()") Then 
35.
    lngBias = 0 
36.
    For k = 0 To UBound(lngBiasKey) 
37.
        lngBias = lngBias + (lngBiasKey(k) * 256^k) 
38.
    Next 
39.
End If 
40.
 
41.
' Determine configuration context and DNS domain from RootDSE object. 
42.
Set objRootDSE = GetObject("LDAP://RootDSE") 
43.
strConfig = objRootDSE.Get("configurationNamingContext") 
44.
strDNSDomain = objRootDSE.Get("defaultNamingContext") 
45.
 
46.
' Use ADO to search Active Directory for ObjectClass nTDSDSA. 
47.
' This will identify all Domain Controllers. 
48.
Set adoCommand = CreateObject("ADODB.Command") 
49.
Set adoConnection = CreateObject("ADODB.Connection") 
50.
adoConnection.Provider = "ADsDSOObject" 
51.
adoConnection.Open "Active Directory Provider" 
52.
adoCommand.ActiveConnection = adoConnection 
53.
 
54.
strBase = "<LDAP://" & strConfig & ">" 
55.
strFilter = "(objectClass=nTDSDSA)" 
56.
strAttributes = "AdsPath" 
57.
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree" 
58.
 
59.
adoCommand.CommandText = strQuery 
60.
adoCommand.Properties("Page Size") = 100 
61.
adoCommand.Properties("Timeout") = 60 
62.
adoCommand.Properties("Cache Results") = False 
63.
 
64.
Set adoRecordset = adoCommand.Execute 
65.
 
66.
' Enumerate parent objects of class nTDSDSA. Save Domain Controller 
67.
' AdsPaths in dynamic array arrstrDCs. 
68.
k = 0 
69.
Do Until adoRecordset.EOF 
70.
    Set objDC = _ 
71.
        GetObject(GetObject(adoRecordset.Fields("AdsPath").Value).Parent) 
72.
    ReDim Preserve arrstrDCs(k) 
73.
    arrstrDCs(k) = objDC.DNSHostName 
74.
    k = k + 1 
75.
    adoRecordset.MoveNext 
76.
Loop 
77.
adoRecordset.Close 
78.
 
79.
' Retrieve lastLogon attribute for each user on each Domain Controller. 
80.
' Das lastLogon Attribut für jeden User auf jedem DC ermitteln. Der höchste Wert aller DC's gewinnt 
81.
For k = 0 To Ubound(arrstrDCs) 
82.
    strBase = "<LDAP://" & arrstrDCs(k) & "/" & strDNSDomain & ">" 
83.
    strFilter = "(&(objectCategory=Computer)(objectClass=Computer))" 
84.
    strAttributes = "distinguishedName,lastLogon,cn,dNSHostName" 
85.
    strQuery = strBase & ";" & strFilter & ";" & strAttributes _ 
86.
        & ";subtree" 
87.
    adoCommand.CommandText = strQuery 
88.
    On Error Resume Next 
89.
    Set adoRecordset = adoCommand.Execute 
90.
    If (Err.Number <> 0) Then 
91.
        On Error GoTo 0 
92.
        Wscript.Echo "Domain Controller not available: " & arrstrDCs(k) 
93.
    Else 
94.
        On Error GoTo 0 
95.
        Do Until adoRecordset.EOF 
96.
            strDN = adoRecordset.Fields("distinguishedName").Value 
97.
            On Error Resume Next 
98.
            Set objDate = adoRecordset.Fields("lastLogon").Value 
99.
            If (Err.Number <> 0) Then 
100.
                On Error GoTo 0 
101.
                dtmDate = #1/1/1601# 
102.
            Else 
103.
                On Error GoTo 0 
104.
                lngHigh = objDate.HighPart 
105.
                lngLow = objDate.LowPart 
106.
                If (lngLow < 0) Then 
107.
                    lngHigh = lngHigh + 1 
108.
                End If 
109.
                If (lngHigh = 0) And (lngLow = 0 ) Then 
110.
                    dtmDate = #1/1/1601# 
111.
                Else 
112.
                    dtmDate = #1/1/1601# + (((lngHigh * (2 ^ 32)) _ 
113.
                        + lngLow)/600000000 - lngBias)/1440 
114.
                End If 
115.
            End If 
116.
            If (objList.Exists(strDN) = True) Then 
117.
                If (dtmDate > objList(strDN)) Then 
118.
                    objList.Item(strDN) = dtmDate 
119.
					objList_LogonServer.Item(strDN) = arrstrDCs(k) & ";" & adoRecordset.Fields("cn").Value & ";" & adoRecordset.Fields("dNSHostName").Value 
120.
                End If 
121.
            Else 
122.
                objList.Add strDN, dtmDate 
123.
				objList_LogonServer.Add strDN, arrstrDCs(k) & ";" & adoRecordset.Fields("cn").Value & ";" & adoRecordset.Fields("dNSHostName").Value 
124.
            End If 
125.
            adoRecordset.MoveNext 
126.
        Loop 
127.
        adoRecordset.Close 
128.
    End If 
129.
Next 
130.
 
131.
' Output latest lastLogon date for each user. 
132.
For Each strUser In objList.Keys 
133.
    Wscript.Echo strUser & ";" & objList.Item(strUser) & ";" & objList_LogonServer.Item(strUser) 
134.
Next 
135.
 
136.
' Clean up. 
137.
adoConnection.Close 
138.
Set objRootDSE = Nothing 
139.
Set adoConnection = Nothing 
140.
Set adoCommand = Nothing 
141.
Set adoRecordset = Nothing 
142.
Set objDC = Nothing 
143.
Set objDate = Nothing 
144.
Set objList = Nothing 
145.
Set objShell = Nothing 
146.
 
147.
 
148.
function IsHostCscript() 
149.
 
150.
    on error resume next 
151.
     
152.
    dim strFullName  
153.
    dim strCommand  
154.
    dim i, j  
155.
    dim bReturn 
156.
     
157.
    bReturn = false 
158.
     
159.
    strFullName = WScript.FullName 
160.
     
161.
    i = InStr(1, strFullName, ".exe", 1) 
162.
     
163.
    if i <> 0 then 
164.
         
165.
        j = InStrRev(strFullName, "\", i, 1) 
166.
         
167.
        if j <> 0 then 
168.
             
169.
            strCommand = Mid(strFullName, j+1, i-j-1) 
170.
             
171.
            if LCase(strCommand) = "cscript" then 
172.
             
173.
                bReturn = true   
174.
             
175.
            end if     
176.
                 
177.
        end if 
178.
         
179.
    end if 
180.
     
181.
    if Err <> 0 then 
182.
     
183.
        wscript.echo L_Text_Error_General01_Text & L_Space_Text & L_Error_Text & L_Space_Text _ 
184.
                     & L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description  
185.
         
186.
    end if 
187.
     
188.
    IsHostCscript = bReturn 
189.
 
190.
end function
Bitte warten ..
Mitglied: dieablo
10.06.2010 um 10:32 Uhr
Hi Markus,

die csv ist leer.
Woran kann das liegen ?

Danke !

Lg
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
Dieser active directory domänencontroller schein der letzte dns (3)

Frage von homermg zum Thema Windows Server ...

Linux Userverwaltung
OwnCloud : neues Active Directory : gleiche AD Benutzer : neue ownCloud Benutzer (5)

Frage von ThePcSwagTogether zum Thema Linux Userverwaltung ...

Windows Server
gelöst (Active Directory) Konto vom Benutzer wird sofort wieder gesperrt (9)

Frage von Sachellen zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...