Jump to content

How do I search for more than 1 topic in my array.


Recommended Posts

Hi.

A user have to be a member of specific groups. If the user is a member of 1 of the below groups it has to a member of "Mailuser_". If not then I need to add user to the "Mailuser_".

But how can I search in the array. In the code I do If...then, but it will just jump to my next if...then and search in that "index". But that is not what I want. It seems that I have to do a new For...To, right? But there have to be a easier way to do this.

 

Func FindADInfo()
    Local $sUsersSource, $sBackupFolder, $sSiteHomePath, $sFileOpenDialog
    Local $aSamAccountName[1][1], $aTempSamAccountName[1]
    For $i = 0 to UBound($aAllMailSites) - 1
        if $aAllMailSites[$i] <> "" then
            if $bDebugMode Then
                ConsoleWrite("Collecting AD info for " & StringRight($aAllMailSites[$i], 2) & StringMid($aAllMailSites[$i], StringInStr($aAllMailSites[$i], ",") - 2, 2) & @CRLF)
            Else
                _FileWriteLog($hFile, "Collecting AD info for " & StringRight($aAllMailSites[$i], 2) & StringMid($aAllMailSites[$i], StringInStr($aAllMailSites[$i], ",") - 2, 2))
            EndIf
            $aSamAccountName = _AD_GetObjectsInOU($aAllMailSites[$i] & ",OU=company,DC=AD,DC=company,DC=ORG", "(&(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 $aUserGroups = _AD_GetUserGroups($aSamAccountName[$x][1])
                    _ArrayDisplay($aUserGroups,$aSamAccountName[$x][0])
                    if IsArray($aUserGroups) Then
                        for $y = 1 to UBound($aUserGroups) -1
                            ;MsgBox(0,"",$aUserGroups[$y])
                            If StringInStr($aUserGroups[$y],"Office365_E3_SharedMailBox") <> 0 Or StringInStr($aUserGroups[$y],"Office365_E3_OPP_EXO_SPO") <> 0 Or StringInStr($aUserGroups[$y],"Office365_E3_OPP_EXO_SFBPLUS") <> 0 Or StringInStr($aUserGroups[$y],"Office365_E3_OPP_EXO_SFB") <> 0 Or StringInStr($aUserGroups[$y],"Office365_E3_OPP") <> 0 Or StringInStr($aUserGroups[$y],"Office365_E3_FULL") <> 0 Or StringInStr($aUserGroups[$y],"Office365_E1_EXO") <> 0 Then
                                If StringInStr($aUserGroups[$y],"Mailuser_") = 0 Then
                                    ConsoleWrite($aSamAccountName[$x][0] & " Add to mailgroup")
                                EndIf
                            EndIf
                        Next
                    EndIf
                EndIf
            Next
        EndIf
    Next
EndFunc   ;==>FindADInfo

 

Edited by Valnurat

Yours sincerely

Kenneth.

Link to comment
Share on other sites

Should be something like this (untested):

Func FindADInfo()
    Local $sUsersSource, $sBackupFolder, $sSiteHomePath, $sFileOpenDialog
    Local $aSamAccountName[1][1], $aTempSamAccountName[1]
    For $i = 0 To UBound($aAllMailSites) - 1
        If $aAllMailSites[$i] <> "" Then
            If $bDebugMode Then
                ConsoleWrite("Collecting AD info for " & StringRight($aAllMailSites[$i], 2) & StringMid($aAllMailSites[$i], StringInStr($aAllMailSites[$i], ",") - 2, 2) & @CRLF)
            Else
                _FileWriteLog($hFile, "Collecting AD info for " & StringRight($aAllMailSites[$i], 2) & StringMid($aAllMailSites[$i], StringInStr($aAllMailSites[$i], ",") - 2, 2))
            EndIf
            $aSamAccountName = _AD_GetObjectsInOU($aAllMailSites[$i] & ",OU=company,DC=AD,DC=company,DC=ORG", "(&(objectcategory=person)(objectclass=user))", 2, "sAMAccountName,distinguishedName,displayname", "displayname")
;           _ArrayDelete($aSamAccountName, 0) ; Enhance performance
            For $x = 1 To $aSamAccountName[0][0]
                If StringInStr($aSamAccountName[$x][1], "Resources") = 0 Then
                    Local $aUserGroups = _AD_GetUserGroups($aSamAccountName[$x][1])
                    _ArrayDisplay($aUserGroups, $aSamAccountName[$x][0])
                    If IsArray($aUserGroups) Then
                        Local $bMailGroup = False, $bOfficegroup = False
                        For $y = 1 To UBound($aUserGroups) - 1
                            If StringInStr($aUserGroups[$y], "Office365_E3_SharedMailBox") Or StringInStr($aUserGroups[$y], "Office365_E3_OPP_EXO_SPO") Or StringInStr($aUserGroups[$y], "Office365_E3_OPP_EXO_SFBPLUS") Or _ 
                                StringInStr($aUserGroups[$y], "Office365_E3_OPP_EXO_SFB") Or StringInStr($aUserGroups[$y], "Office365_E3_OPP") Or StringInStr($aUserGroups[$y], "Office365_E3_FULL") Or _ 
                                StringInStr($aUserGroups[$y], "Office365_E1_EXO") Then $bOfficeGroup = True
                                If StringInStr($aUserGroups[$y], "Mailuser_") Then $bMailGroup = True
                            EndIf
                        Next
                        If $bOfficeGroup = True And $bMailGroup = False Then ConsoleWrite($aSamAccountName[$x][0] & " Add to mailgroup")
                    EndIf
                EndIf
            Next
        EndIf
    Next
EndFunc   ;==>FindADInfo

 

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2022-02-19 - Version 1.6.1.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 (NEW 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

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...