blob 10 Geschrieben 25. Mai 2010 Melden Teilen Geschrieben 25. Mai 2010 Hallo an die Gemeinde, ich stehe gerade aufm Schlauch... ich habe hier ein Tool das mir alle DCs abfragt und mir dann zeigt wann ein User das letzte Mal angemeldet war, das letzte Mal das PAsswort geändert wurde und wann es ablaufen wird. Jetzt will ich mit Boardmitteln gerne einen einzelnen DC abfragen. Aber mit der Console (AD Benutzer und Computer) sehe ich nichts... weiss jemand wie ich an die Info ran komme? Danke im voraus! Zitieren Link zu diesem Kommentar
Necron 71 Geschrieben 25. Mai 2010 Melden Teilen Geschrieben 25. Mai 2010 Hi, du musst die acctinfo.dll aus den Account Lockout und Management Tools auf dem entsprechenden Client/Server registrieren. Mittels MMC, auf dem Rechner wo du die dll registriert hast, siehst du dann in den Eigenschaften des Benutzer unter dem Reiter Additional Account Info die nötigen Informationen. Allerdings kannst du damit keinen Report generieren, der dir alle Benutzer des DC's anzeigt. Zitieren Link zu diesem Kommentar
Daim 12 Geschrieben 25. Mai 2010 Melden Teilen Geschrieben 25. Mai 2010 Servus: LDAP://Yusufs.Directory.Blog/ - Die letzte Benutzeranmeldung herausfinden oder mit: net user <Benutzername> /Domain Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 25. Mai 2010 Melden Teilen Geschrieben 25. Mai 2010 Hallo, also: Wann ein Benutzer das letzte Mal sein Passwort verändert hat, steht im Attribut pwdLastSet. Das Format ist leider das ziemlich schlecht lesbare Microsoft Integer8 (100-Nanosekunden-Abschnitte seit 1.1.1600!). Aber hier siehst du, wie man es umrechnen kann: SelfADSI : Microsoft Timestamp / Interval Attribute mit Integer8 Syntax Dann brauchst du noch das maximale Passwort-alter der Domäne, damit du das Ablaufdatum für jeden Benutzer errechnen kannst. Das steht (in der Default Domain Policy - und auch) im Domänenobjekt in der eigenschaft maxPwdAge. Auch dies ist Integer8, negativer Wert der 100 Nanosekunden-Abschnitte.... Naja, ein bisschen rumgerechnet, das alles mit einer ADO-Suche auf AD User gekoppelt - und das VB Script hier spuckt Dir Deine Liste bzgl. Passwort-Setzen aus: ldapFilter = "(sAMAccountType=805306368)" ' <- User-Objekte Set rootDSE = GetObject("LDAP://rootDSE") domainDN = rootDSE.Get("defaultNamingContext") Set objDomain = GetObject("LDAP://" & domainDN) Set interval = objDomain.maxPwdAge domainPwAge = LargeIntegerToMinutes(interval) WScript.Echo "Maximales Passwortalter ist: " & (domainPwAge/1440) & " Tage" WScript.Echo Set ado = CreateObject("ADODB.Connection") ado.Provider = "ADSDSOObject" ado.Open "ADSearch" Set objectList = ado.Execute("<LDAP://" & domainDN & ">;" & ldapFilter & ";distinguishedName,pwdLastSet;subtree") While Not objectList.EOF pWSetValue = objectList.Fields("pwdLastSet") pwLastSet = LargeIntegerToDate(pWSetValue) pwNextSet = DateAdd("n", domainPwAge, pwLastSet) WScript.Echo objectList.Fields("distinguishedName") & " : " & pwLastSet & " : " & pwNextSet objectList.MoveNext Wend '____________________ [ LargeIntegerToDate ] ' ' Function LargeIntegerToDate(value) 'nimmmt einen Microsoft LargeInteger Wert (Integer8) und gibt das entsprechende Datum plus Uhrzeit zurück Set sho = CreateObject("Wscript.Shell") timeShiftValue = sho.RegRead("HKLM\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias") If IsArray(timeShiftValue) Then timeShift = 0 For i = 0 To UBound(timeShiftValue) timeShift = timeShift + (timeShiftValue(i) * 256^i) Next Else timeShift = timeShiftValue End If i8High = value.HighPart i8Low = value.LowPart If (i8Low < 0) Then i8High = i8High + 1 End If If (i8High = 0) And (i8Low = 0) Then LargeIntegerToDate = #1/1/1601# Else LargeIntegerToDate = #1/1/1601# + (((i8High * 2^32) + i8Low)/600000000 - timeShift)/1440 End If End Function '_____________________________ [ LargeIntegerToMinutes ] ' ' Function LargeIntegerToMinutes(value) 'nimmmt einen Microsoft LargeInteger Wert (Integer8) und gibt das entsprechende ... '... Zeitinterval in Minuten zurück (-1 für "Never") If (value.HighPart = -2147483648) And (value.LowPart = 0) then LargeIntegerToMinutes = -1 Else i8High = value.HighPart i8Low = value.LowPart If (i8Low < 0) Then i8High = i8High + 1 End If LargeIntegerToMinutes = -(((i8High * 2^32) + i8Low)/600000000) End If End Function Vorsicht, wenn du >1000 Benutzer hast, dann mußt Du eine PagedResults-Suche durchführen. Dann muß nochmal ein bisschen verändert werden, siehe hier: SelfADSI : LDAP Objekte im Verzeichnis suchen mit ADO Gruß, Philipp Zitieren Link zu diesem Kommentar
blob 10 Geschrieben 26. Mai 2010 Autor Melden Teilen Geschrieben 26. Mai 2010 Danke Danke für die zahlreichen Antworten! :-) Ich habe nun die DLL registriert. Mit dem Befehl W32tm /ntte <integer> kann man den Wert von pwdlastset im cmd Fenster auch umrechnen lassen. Ich habe nämlich versucht einen neuen Wert in pwdlastset einzufügen, damit ich ablaufende Accounts simulieren kann. Leider sagt mir ADSIEDIT dauernd, es wäre ein falscher Wert. Weiss jmd zufällig wie ich das Kennwortalter manipulieren kann? Habe leider keine Testumgebung und die Kennwortrichtlinie will ich nicht anfassen, gibt nur Schläge vom Chef ;-) Greetz Zitieren Link zu diesem Kommentar
NilsK 2.930 Geschrieben 26. Mai 2010 Melden Teilen Geschrieben 26. Mai 2010 Moin, doch, du hast eine Testumgebung. Du hast aber keine Produktionsumgebung. Manipulationen dieser Art führt man nicht in einem produktiven AD aus! Schnapp dir einen Virtualisierer und baue dir eine Test-VM! Gruß, Nils Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 26. Mai 2010 Melden Teilen Geschrieben 26. Mai 2010 Hallo, ich auch nochmal, also Du kannst den Wert von pwdLastSet auch garnicht auf einen bestimmten Wert ändern, selbst wenn du den korrekten Integer8-Wert eines bestimmten Datums hast. Nur die Werte 0 und -1 sind erlaubt, ansonsten gibt's ein Fehler DSID-031A0FB6 Invalid Argument... Wenn Du eine W2K8 Umgebung hast, dann setz eine Fine Grained Password Policy und lass für deinen einen Testuser das PAsswort in einem Tag ablaufen....Ansonsten setzt Du Dir tatsächlich lieber mal kurz ein Test-AD auf, in dem du die Domain Paswortrichtlinien setzen kannst. Gruß, Philipp Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.