Valnurat Posted September 4, 2017 Posted September 4, 2017 expandcollapse popupFunc FindADInfo() Local $sUsersSource, $sBackupFolder, $sSiteHomePath, $sFileOpenDialog Local $aSamAccountName[0][1], $aAllSamAccounts[0][1] For $i = 0 to UBound($aAllMailSites) - 1 if $aAllMailSites[$i][1] <> "" then if $bDebugMode Then ConsoleWrite("Collecting AD info for " & StringRight($aAllMailSites[$i][1], 2) & StringMid($aAllMailSites[$i][1], StringInStr($aAllMailSites[$i][1], ",") - 2, 2) & @CRLF) Else _FileWriteLog($hFile, "Collecting AD info for " & StringRight($aAllMailSites[$i][1], 2) & StringMid($aAllMailSites[$i][1], StringInStr($aAllMailSites[$i][1], ",") - 2, 2)) EndIf $aSamAccountName = _AD_GetObjectsInOU($aAllMailSites[$i][1] & $sCompany, "(&(objectcategory=person)(objectclass=user))",2, "sAMAccountName,distinguishedName,displayname", "displayname") _ArrayDelete($aSamAccountName, 0) for $x = 0 to UBound($aSamAccountName) -1 if StringInStr($aSamAccountName[$x][1],"Resources") = 0 Then Local $iValue = '' Local $aUserGroups = _AD_GetUserGroups($aSamAccountName[$x][1]) If IsArray($aUserGroups) Then Local $bMailGroup = False, $bOfficegroup = False For $y = 1 To UBound($aUserGroups) - 1 For $z = 1 To $aADOfficeGroups[0] If StringInStr($aUserGroups[$y], $aADOfficeGroups[$z]) Then $bOfficeGroup = True Next If StringInStr($aUserGroups[$y], $aAllMailSites[$i][2],1) Then $bMailGroup = True Local $sRemoveGroup = $aUserGroups[_ArraySearch($aUserGroups,$aAllMailSites[$i][2],0,0,0,1,1)] EndIf Next If $bOfficeGroup = True And $bMailGroup = False Then If StringInStr("N/A",$aAllMailSites[$i][3]) = 0 Then $iValue = _AD_AddUserToGroup($aAllMailSites[$i][3], $aSamAccountName[$x][1]) if $bDebugMode Then If $iValue = 1 Then ConsoleWrite("User '" & $aSamAccountName[$x][2] & "' successfully assigned to group '" & $aAllMailSites[$i][3] & "'" & @CRLF) ElseIf @error = 1 Then ConsoleWrite("Group '" & $aAllMailSites[$i][3] & "' does not exist" & @CRLF) ElseIf @error = 2 Then ConsoleWrite("User '" & $aSamAccountName[$x][2] & "' does not exist" & @CRLF) ElseIf @error = 3 Then ConsoleWrite("User '" & $aSamAccountName[$x][2] & "' is already a member of group '" & $aAllMailSites[$i][3] & "'" & @CRLF) Else ConsoleWrite("Return code '" & @error & "' from Active Directory" & @CRLF) EndIf Else If $iValue = 1 Then _FileWriteLog($hFile, "User '" & $aSamAccountName[$x][2] & "' successfully assigned to group '" & $aAllMailSites[$i][3] & "'" & @CRLF) ElseIf @error = 1 Then _FileWriteLog($hFile, "Group '" & $aAllMailSites[$i][3] & "' does not exist" & @CRLF) ElseIf @error = 2 Then _FileWriteLog($hFile, "User '" & $aSamAccountName[$x][2] & "' does not exist" & @CRLF) ElseIf @error = 3 Then _FileWriteLog($hFile, "User '" & $aSamAccountName[$x][2] & "' is already a member of group '" & $aAllMailSites[$i][3] & "'" & @CRLF) Else _FileWriteLog($hFile, "Return code '" & @error & "' from Active Directory" & @CRLF) EndIf EndIf EndIf EndIf If $bOfficeGroup = False And $bMailGroup = True Then $iValue = _AD_RemoveUserFromGroup($sRemoveGroup, $aSamAccountName[$x][1]) if $bDebugMode Then If $iValue = 1 Then ConsoleWrite("User '" & $aSamAccountName[$x][2] & "' successfully removed from group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "'" & @CRLF) ElseIf @error = 1 Then ConsoleWrite("Group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "' does not exist" & @CRLF) ElseIf @error = 2 Then ConsoleWrite("User '" & $aSamAccountName[$x][2] & "' does not exist" & @CRLF) ElseIf @error = 3 Then ConsoleWrite("User '" & $aSamAccountName[$x][2] & "' is not a member of group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "'" & @CRLF) Else ConsoleWrite("Return code '" & @error & "' from Active Directory" & @CRLF) EndIf Else If $iValue = 1 Then _FileWriteLog($hFile, "User '" & $aSamAccountName[$x][2] & "' successfully removed from group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "'" & @CRLF) ElseIf @error = 1 Then _FileWriteLog($hFile, "Group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "' does not exist" & @CRLF) ElseIf @error = 2 Then _FileWriteLog($hFile, "User '" & $aSamAccountName[$x][2] & "' does not exist" & @CRLF) ElseIf @error = 3 Then _FileWriteLog($hFile, "User '" & $aSamAccountName[$x][2] & "' is not a member of group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "'" & @CRLF) Else _FileWriteLog($hFile, "Return code '" & @error & "' from Active Directory" & @CRLF) EndIf EndIf EndIf If $bOfficeGroup = True And $bMailGroup = True Then If StringInStr($aSamAccountName[$x][1],"Leavers") <> 0 Then $iValue = _AD_RemoveUserFromGroup($sRemoveGroup, $aSamAccountName[$x][1]) if $bDebugMode Then If $iValue = 1 Then ConsoleWrite("User '" & $aSamAccountName[$x][2] & "' successfully removed from group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "' because account is in leavers." & @CRLF) ElseIf @error = 1 Then ConsoleWrite("Group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "' does not exist" & @CRLF) ElseIf @error = 2 Then ConsoleWrite("User '" & $aSamAccountName[$x][2] & "' does not exist" & @CRLF) ElseIf @error = 3 Then ConsoleWrite("User '" & $aSamAccountName[$x][2] & "' is not a member of group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "'" & @CRLF) Else ConsoleWrite("Return code '" & @error & "' from Active Directory" & @CRLF) EndIf Else If $iValue = 1 Then _FileWriteLog($hFile, "User '" & $aSamAccountName[$x][2] & "' successfully removed from group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "' because account is in leavers." & @CRLF) ElseIf @error = 1 Then _FileWriteLog($hFile, "Group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "' does not exist" & @CRLF) ElseIf @error = 2 Then _FileWriteLog($hFile, "User '" & $aSamAccountName[$x][2] & "' does not exist" & @CRLF) ElseIf @error = 3 Then _FileWriteLog($hFile, "User '" & $aSamAccountName[$x][2] & "' is not a member of group '" & StringMid($sRemoveGroup,4,StringInStr($sRemoveGroup,',')-4) & "'" & @CRLF) Else _FileWriteLog($hFile, "Return code '" & @error & "' from Active Directory" & @CRLF) EndIf EndIf EndIf EndIf EndIf EndIf Next EndIf Next EndFunc ;==>FindADInfo Hi I need some help. I search for a group in a list of groups for AD users. For an exampel in 1 our site I'm looking for a group containing this "MailUsers". We have for that site groups like this "MailUsers_1", "MailUsers_2", "MailUsers_3" ect until _8. In the above code it works for "MailUsers_1 to 8", but if I on another site search for "M_ALL", groups like this "M_ALL_PT" is also found. Is there a small trix that can accomplish my request? Do I need to put all the groups I want to search for in an array? Yours sincerely Kenneth.
careca Posted September 4, 2017 Posted September 4, 2017 Maybe you could get the string count, and only retrieve results with the same count. "M_ALL" 5 chars "M_ALL_PT" if <> 5 chars ignore. something along these lines. Spoiler Renamer - Rename files and folders, remove portions of text from the filename etc. GPO Tool - Export/Import Group policy settings. MirrorDir - Synchronize/Backup/Mirror Folders BeatsPlayer - Music player. Params Tool - Right click an exe to see it's parameters or execute them. String Trigger - Triggers pasting text or applications or internet links on specific strings. Inconspicuous - Hide files in plain sight, not fully encrypted. Regedit Control - Registry browsing history, quickly jump into any saved key. Time4Shutdown - Write the time for shutdown in minutes. Power Profiles Tool - Set a profile as active, delete, duplicate, export and import. Finished Task Shutdown - Shuts down pc when specified window/Wndl/process closes. NetworkSpeedShutdown - Shuts down pc if download speed goes under "X" Kb/s. IUIAutomation - Topic with framework and examples Au3Record.exe
Valnurat Posted September 5, 2017 Author Posted September 5, 2017 Yes, that could be a solution. Yours sincerely Kenneth.
water Posted September 5, 2017 Posted September 5, 2017 Were do you do the search in your script? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Valnurat Posted September 5, 2017 Author Posted September 5, 2017 If StringInStr($aUserGroups[$y], $aAllMailSites[$i][2],1) Then $bMailGroup = True Local $sRemoveGroup = $aUserGroups[_ArraySearch($aUserGroups,$aAllMailSites[$i][2],0,0,0,1,1)] EndIf Yours sincerely Kenneth.
water Posted September 5, 2017 Posted September 5, 2017 For your requirement only a regular expressions comes to my mind. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
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