Hi,
ich bin auf der Suche wie ich für einen lokalen Benutzeraccount das "Letzte Setzen des Kennwortes" auslesen kann.
Hat jemand einen Tipp für mich ?
Grüße
Markus
Hi,
ich bin auf der Suche wie ich für einen lokalen Benutzeraccount das "Letzte Setzen des Kennwortes" auslesen kann.
Hat jemand einen Tipp für mich ?
Grüße
Markus
Hi, den "net user" Befehl kenne ich natürlich. Ich dachte es gibt vielleicht eine Möglichkeit den Wert zum "Letzten setzen des Kennwortes" direkz auszulesen.
Wenn ich mich recht erinnere kann man das setzten des letzten Kennwortes nicht so auslesen, aber errechnen.
Die Userinformationen können mit WMI Win32_Useraccount ausgelesen werden. Wenn man jetzt das Datum wann das Kennwort abläuft und die PW-Life-Time nimmt, bekommt man die letzte Änderung heraus.
In einem AD ist das etwas leichter dank Water's AD-Funktionen (tiefe Verbeugung Richtung Water )
lg
Racer
Ganz generell: Es hilft unheimlich, wenn man zu einer Frage auch noch den eigenen Wissensstand, die bereits durchgeführten Versuche nennt. Damit erspart man Hilfswilligen leere Meter.
Was hast Du schon versucht? WMI, Powershell ...?
(tiefe Verbeugung Richtung Water )
Danke vielmals
PowerShell kann das scheinbar. Musst das Skript halt noch anpassen
Ganz generell: Es hilft unheimlich, wenn man zu einer Frage auch noch den eigenen Wissensstand, die bereits durchgeführten Versuche nennt. Damit erspart man Hilfswilligen leere Meter.
Was hast Du schon versucht? WMI, Powershell ...?
Ja, stimmt. Mehr Informationen sind hilfreich,sorry... Ich habe jetzt einen Ansatz gefunden, weiß aber nicht wie ich genau den Wert herausbekomme den ich benötige.
Beispiel:
$strComputer = "."
$CPU = ObjGet("WinNT://" & $strComputer & ",Computer")
$objUser = $CPU.GetObject("User", "tester")
Msgbox (0,"",$objUser.name)
exit
Der Name des Users wird richtig ausgegeben. "Fullname" geht zum Beispiel auch. Aber die Eigenschaft für "Letztes setzen des Kennwortes" finde ich einfach nicht, oder gibt es die vielleicht gar nicht...
Richtig, das "Alter eines Kennwortes würde bedingen, dass es mit dem setzen des Kennwortes und dem aktuellen Zeitstempel berechnet wird.
Das kann man ja nicht abspeichern als Wert.
damit sollte es klappen
$isec kannst du dann auch verwenden um mit _DateDiff() das Datum ausgeben zu lassen
#include <Date.au3>
$strComputer = "."
$CPU = ObjGet("WinNT://" & $strComputer & ",Computer")
$objUser = $CPU.GetObject("User", "Testuser")
$isec=$objUser.PasswordAge
$days = Int($isec/(24*60*60))
$remain=Mod($isec,(24*60*60))
$Hours = Int($remain/(60*60))
$remain=Mod($remain,(60*60))
$Mins = Int($remain/60)
$Secs=Mod($remain,60)
Msgbox (0,"Kennwort gültig seit","Das Kennwort des Users " & $objUser.name & @CRLF & "gil seit:" & @CRLF & @CRLF & _
"Tage: " & $days & @CRLF & _
"Stunden: " & $Hours & @CRLF & _
"Minuten: " & $Mins & @CRLF & _
"Sekunden: " & $Secs)
Alles anzeigen
Oder hiermit:
#include <Array.au3>
#include <AutoItConstants.au3>
#include <StringConstants.au3>
Global $sPasswordSearch = "Letztes Setzen des Kennworts"
Global $iPasswordSearchLength = StringLen("Letztes Setzen des Kennworts")
Global $iPID = Run('Net user "' & @UserName & '"', "", Default, $STDOUT_CHILD)
ProcessWaitClose($iPID)
Global $sLine = StdoutRead($iPID)
Global $aLines = StringSplit($sLine, @CRLF, BitOR($STR_ENTIRESPLIT, $STR_NOCOUNT))
For $i = 0 To UBound($aLines) - 1
If StringLeft($aLines[$i], $iPasswordSearchLength) = $sPasswordSearch Then
$sPassword = StringStripWS(StringMid($aLines[$i], $iPasswordSearchLength + 1), $STR_STRIPSPACES)
ConsoleWrite($sPassword & @CRLF)
Exit
EndIf
Next
Alles anzeigen
Hallo zusammen,
bitte entschuldigt die Einmischung
Aber Musashi und weitere haben hier im Forum bereits zum Thema mehrere (immer noch funktionierende Skripte) erstellt.
Vielleicht ergänzt das ja noch ein wenig das Vorhaben von bordermax
Oder hiermit:
AutoIt Alles anzeigen#include <Array.au3> #include <AutoItConstants.au3> #include <StringConstants.au3> Global $sPasswordSearch = "Letztes Setzen des Kennworts" Global $iPasswordSearchLength = StringLen("Letztes Setzen des Kennworts") Global $iPID = Run('Net user "' & @UserName & '"', "", Default, $STDOUT_CHILD) ProcessWaitClose($iPID) Global $sLine = StdoutRead($iPID) Global $aLines = StringSplit($sLine, @CRLF, BitOR($STR_ENTIRESPLIT, $STR_NOCOUNT)) For $i = 0 To UBound($aLines) - 1 If StringLeft($aLines[$i], $iPasswordSearchLength) = $sPasswordSearch Then $sPassword = StringStripWS(StringMid($aLines[$i], $iPasswordSearchLength + 1), $STR_STRIPSPACES) ConsoleWrite($sPassword & @CRLF) Exit EndIf Next
Super, das hier nehme ich ! Vielen Dank.
Und übrigends...ich finde es immer wieder super wie schnell einem hier geholfen wird.
Danke an Alle !