kneze Posted April 11, 2018 Posted April 11, 2018 hi i use from Command Line net user /Domain UserID >> C:\temp\sample.txt to request informations about specific Domain User. Now i wil get Password last set, Password expires, password changeable and all Groups from Global Group Membership of this User to display in a MsgBox. With FUNC _readGroups i can check which position is group date of last password set but i don't know how to get needed informations as i wrote at the beginning. Thanks in advance for any hint how can i solve it. expandcollapse popup#cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.3 Author: myName Script Function: Template AutoIt script. #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #include <File.au3> $FilePath=@ScriptDir &"\sample.txt" $StringToSearch="Password last set" $CaseSense=0 $Lines=_FileCountLines($FilePath) $hFile=FileOpen($FilePath,0) $LinesCount=_FileCountLines($FilePath) For $i=0 To Number($Lines) $Test=FileReadLine($hFile,$i) If StringInStr($Test,$StringToSearch,$CaseSense) Then $foundLine = $i _readGroups($foundLine,$LinesCount,$i) ;MsgBox(0,"","The string " & $StringToSearch & " was found on line " & $i) ;MsgBox(0,"","Lines found: " & $LinesCount) ExitLoop EndIf Next FileClose($hFile) FUNC _readGroups($foundLine,$LinesCount,$i) ;For $j=$foundLine To Number($LinesCount) $lLine=FileReadLine($hFile,$i) ;$split = StringSplit($lLine," ") $split = StringSplit(StringStripWS($lLine,1)," ") For $x = 1 To $split[0] MsgBox(0,$x,$split[$x]) Next ;MsgBox(0,"",$split[15]& " " & $split[16]) ;Next EndFunc sample.txt
Subz Posted April 11, 2018 Posted April 11, 2018 " i don't know how to get needed informations as i wrote at the beginning" What does that mean? Personally I whould use the AD UDF that Water wrote:
kneze Posted April 11, 2018 Author Posted April 11, 2018 Hi Subz i would like to get in a Message Box Password last set: Password expires: Password changeable: all AD Groups in which the user is member Sample1 Sample2 Sample3 Sample4 Sample5 etc.
Subz Posted April 11, 2018 Posted April 11, 2018 Here is one way: expandcollapse popup#include <Array.au3> #include <File.au3> Local $aFilePath Local $sFilePath=@ScriptDir &"\sample.txt" Local $aRemove[19] $aRemove[0] = "" $aRemove[1] = "User name" $aRemove[2] = "Full Name" $aRemove[3] = "Comment" $aRemove[4] = "User's comment" $aRemove[5] = "Country/region code" $aRemove[6] = "Account active" $aRemove[7] = "Account expires" $aRemove[8] = "Password required" $aRemove[9] = "User may change password" $aRemove[10] = "Workstations allowed" $aRemove[11] = "Logon script" $aRemove[12] = "User profile" $aRemove[13] = "Home directory" $aRemove[14] = "Last logon" $aRemove[15] = "Logon hours allowed" $aRemove[16] = "The command completed successfully." $aRemove[17] = "The request will be processed at a domain controller for domain" $CaseSense=0 Local $iSearch _FileReadToArray($sFilePath, $aFilePath) If @error Then Exit MsgBox(16, "Error", "Error reading " & $sFilePath) For $i = 0 To UBound($aRemove) - 1 $iSearch = _ArraySearch($aFilePath, $aRemove[$i], 0, 0, 0, 1) If @error Then ContinueLoop _ArrayDelete($aFilePath, $iSearch) Next For $i = UBound($aFilePath) -1 To 0 Step - 1 If StringStripWS($aFilePath[$i], 8) = "" Then _ArrayDelete($aFilePath, $i) Next $aFilePath[0] = UBound($aFilePath) - 1 _ArrayDisplay($aFilePath)
kneze Posted April 12, 2018 Author Posted April 12, 2018 Hi Subz thanks for your way. I have tested and my code was the following; expandcollapse popup#include <File.au3> DIM $StringToSearch[10], $sDATVersion[10] $FilePath=@ScriptDir &"\sample.txt" $j = "1" $StringToSearch[1] = "User Name" ; $sDATVersion[1] $StringToSearch[2] = "Full Name" ; $sDATVersion[2] $StringToSearch[3] = "Comment" ; $sDATVersion[3] $StringToSearch[4] = "Password last set" ; $sDATVersion[4] $StringToSearch[5] = "Password expires" ; $sDATVersion[5] $StringToSearch[6] = "Password changeable" ; $sDATVersion[6] $StringToSearch[7] = "Logon script" ; $sDATVersion[7] $StringToSearch[8] = "Home directory" ; $sDATVersion[8] $StringToSearch[9] = "Last logon" ; $sDATVersion[9] $CaseSense=0 Global $aString = "" $Lines=_FileCountLines($FilePath) $hFile=FileOpen($FilePath,0) $LinesCount=_FileCountLines($FilePath) For $i=0 To Number($Lines) $Test=FileReadLine($hFile,$i) If StringInStr($Test,$StringToSearch[$j],$CaseSense) Then $foundLine = $i ;_readGroups($foundLine,$LinesCount,$i) _readGroups() ;MsgBox(0,"",$sDATVersion[$j]) $j = $j + 1 IF $j = "10" then ExitLoop ContinueLoop EndIf Next MsgBox(0,"User INFO","User Name: " & $sDATVersion[1] & @CRLF & @CRLF & "Full Name: " & $sDATVersion[2] & @CRLF & @CRLF & "Comment: " & $sDATVersion[3] & @CRLF & @CRLF & "Password last set: " & $sDATVersion[4] & @CRLF & @CRLF & "Password expires: " & $sDATVersion[5] & @CRLF & @CRLF & "Password changeable: " & $sDATVersion[6] & @CRLF & @CRLF & "Logon Script: " & $sDATVersion[7] & @CRLF & @CRLF &"Home directory: " & $sDATVersion[8] & @CRLF & @CRLF &"Last logon: " & $sDATVersion[9]) FileClose($hFile) ;FUNC _readGroups($foundLine,$LinesCount,$i) FUNC _readGroups() ;For $j=$foundLine To Number($LinesCount) $sString=FileReadLine($hFile,$i) $aString = StringSplit($sString, @LF) For $i = 1 To $aString[0] If StringInStr($aString[$i], $StringToSearch[$j]) Then $sDATVersion[$j] = StringStripWS(StringReplace($aString[$i], $StringToSearch[$j], ""), 8) Next EndFunc it works. only Password last set, Password expires etc has no space between Date and Time: 06.03.201808:45:31 instead 06.03.2018 08:45:31
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now