VAADAdmin Posted December 1, 2006 Posted December 1, 2006 I am trying to determine a way(best way) to append a number to a username in Active Directory. I want to search AD for a username and if it exists, append a "2" to the username. Then search AD if username2 exists and if it does append "3" and so on. I have it where it will determine if the username exists or does not exist but cannot figure out how to find if 2 exists. Have a feeling it is arrays but I am very weak there. I am currently bringing them up in msgbox to get them to work first. Below is the code snippet I am working with. $samAccountName = StringLower($leftFirst & $leftLast) $objSamAccountName =ObjGet("LDAP://cn=" & $samAccountName & "," & $destinationOU) MsgBox(64,"",$objSamAccountName) If IsObj($objSamAccountName) Then MsgBox(0,"Error",$samAccountName & "already exists") Else MsgBox(0,"Error",$samAccountName & "does not exist") EndIf
Joon Posted December 1, 2006 Posted December 1, 2006 (edited) Maybe something like this.. $counter = 1 While _CheckAccount($samAccountName) $counter += 1 $samAccountName &= $counter WEnd Func _CheckAccount($samAccountName) $objSamAccountName = ObjGet("LDAP://cn=" & $samAccountName & "," & $destinationOU) If IsObj($objSamAccountName) Then Return True Else Return False EndIf EndFunc Edited December 1, 2006 by Joon
VAADAdmin Posted December 4, 2006 Author Posted December 4, 2006 Thank you very much for the reply. It works just great in my script.
VAADAdmin Posted December 4, 2006 Author Posted December 4, 2006 A problem did arise that I am working on but maybe someone has a quick reply. A number is added to the user ID if it exist, such as jsmith then jsmith2. The problem I am having is if jsmith2 exists it will append a 3 such as jsmith23. I want it to remove the 2 and just append the 3. Maybe something like this.. $counter = 1 While _CheckAccount($samAccountName) $counter += 1 $samAccountName &= $counter WEnd Func _CheckAccount($samAccountName) $objSamAccountName = ObjGet("LDAP://cn=" & $samAccountName & "," & $destinationOU) If IsObj($objSamAccountName) Then Return True Else Return False EndIf EndFunc
/dev/null Posted December 4, 2006 Posted December 4, 2006 A problem did arise that I am working on but maybe someone has a quick reply. A number is added to the user ID if it exist, such as jsmith then jsmith2. The problem I am having is if jsmith2 exists it will append a 3 such as jsmith23. I want it to remove the 2 and just append the 3. NOT TESTED! if _CheckAccount($samAccountName) then $counter = 1 While _CheckAccount($samAccountName,$counter) $counter += 1 $samAccountName &= $counter WEnd endif Func _CheckAccount($samAccountName,$counter = "") $objSamAccountName = ObjGet("LDAP://cn=" & $samAccountName & $counter & "," & $destinationOU) If IsObj($objSamAccountName) Then Return True Else Return False EndIf EndFunc Cheers Kurt __________________________________________________________(l)user: Hey admin slave, how can I recover my deleted files?admin: No problem, there is a nice tool. It's called rm, like recovery method. Make sure to call it with the "recover fast" option like this: rm -rf *
Joon Posted December 4, 2006 Posted December 4, 2006 (edited) A problem did arise that I am working on but maybe someone has a quick reply. A number is added to the user ID if it exist, such as jsmith then jsmith2. The problem I am having is if jsmith2 exists it will append a 3 such as jsmith23. I want it to remove the 2 and just append the 3. $counter = "" If StringIsAlpha($samAccountName) Then $counter = 1 Else For $i = Stringlen($samAccountName) To 1 Step -1 If StringIsDigit(StringMid($samAccountName,$i,1)) Then $counter = StringMid($samAccountName,$i,1) & $counter Else $samAccountName = StringLeft($samAccountName,$i) ExitLoop EndIf Next EndIf While _CheckAccount($samAccountName & $counter) $counter += 1 WEnd $samAccountName &= $counter Func _CheckAccount($samAccountName) $objSamAccountName = ObjGet("LDAP://cn=" & $samAccountName & "," & $destinationOU) If IsObj($objSamAccountName) Then Return True Else Return False EndIf EndFunc Not Tested. Edited December 4, 2006 by Joon
improbability_paradox Posted December 4, 2006 Posted December 4, 2006 (edited) A slight variation on /dev/null's suggestion. if _CheckAccount($samAccountName) then $counter = 2 While _CheckAccount($samAccountName,$counter) $counter += 1 WEnd $samAccountName &= $counter endif Func _CheckAccount($samAccountName,$counter = "") $objSamAccountName = ObjGet("LDAP://cn=" & $samAccountName & $counter & "," & $destinationOU) If IsObj($objSamAccountName) Then Return True Else Return False EndIf EndFunc Edit: Changed $counter=1 to $counter=2 so that you dont end up with Name1 as your first numbered account name Edited December 4, 2006 by improbability_paradox
VAADAdmin Posted December 4, 2006 Author Posted December 4, 2006 Perfect, thank you all once again for the fast and accurate responses. I have the script working now thanks to everyones help. I went with improbability_paradox's slight variation on /dev/null's suggestion.
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