Jump to content

Recommended Posts

Posted

Longtime no see everyone! I haven't had a chance to do some coding in a while since some management has decided that innovation was just awful since they didn't understand it. It's been a couple of years since I've actually produced anything. I have now taken a new position within the same company with a new manager who salivates at innovation. My new role involves doing a lot of account management, like a Sys Admin but I'm not a Sys Admin. Anyways, I'm throwing together a script to pull a users group memberships and users who are members of a certain group. Both requests seem to come often. We don't have a quick pull up and export tool, so I'm making one. I'm using AD.au3 to get the members and populate into a listbox. I think I've gone full potato because I cannot for the life of me figure out how to remove the OU information from the strings. Example, I have a list of stuff that looks like this:

Group-Thing,OU=Place1,OU=Place2,OU=Place3

I'm wanting to remove everything past the first comma. I used a simple StringTrimLeft to remove the CN= from the string. By just pulling straight from AD like this am I doing it wrong or is there a different way to pull Group-Thing by itself?

 

Here is my very very early code, like this is what I tossed together in about 10 mins, design time from Koda included. Forgive me for being rather rusty.

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <AD.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Group Soup", 483, 403)
$Input1 = GUICtrlCreateInput("", 32, 64, 169, 21)
$Group1 = GUICtrlCreateGroup("User Group Lookup", 16, 40, 201, 73)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Group Member Lookup", 16, 160, 201, 73)
$Input2 = GUICtrlCreateInput("", 32, 192, 169, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$List1 = GUICtrlCreateList("", 240, 40, 225, 331)
$Button1 = GUICtrlCreateButton("User Group", 16, 120, 91, 25)
$Button2 = GUICtrlCreateButton("Group Members", 16, 240, 91, 25)
$Button3 = GUICtrlCreateButton("Export", 128, 120, 91, 25)
$Button4 = GUICtrlCreateButton("Export", 128, 240, 91, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            _List_User_Groups(GUICtrlRead($Input1))

    EndSwitch
WEnd

Func _List_User_Groups($User)

; Open Connection to the Active Directory
_AD_Open()
If @error Then Exit MsgBox(16, "Active Directory Example Skript", "Function _AD_Open encountered a problem. @error = " & @error & ", @extended = " & @extended)

; Get a sorted array of group names (FQDN) that the user is immediately a member of
Global $aUser = _AD_GetUserGroups($User)
If @error > 0 Then
    MsgBox(64, "Active Directory Functions - Example 1", "User '" & $User & "' has not been assigned to any group")
Else
    For $i = 1 To UBound($aUser) - 1

        GUICtrlSetData($List1, StringTrimLeft($aUser[$i], 3))
    Next

EndIf

; Close Connection to the Active Directory
_AD_Close()

EndFunc

 

Posted
30 minutes ago, Bearpocalypse said:

I'm making one. I'm using AD.au3 to get the members and populate into a listbox. I think I've gone full potato because I cannot for the life of me figure out how to remove the OU information from the strings. Example, I have a list of stuff that looks like this:

Group-Thing,OU=Place1,OU=Place2,OU=Place3

Premising that I don't know anything about AD, if you're trying to do this, use StringSplit(), and build your string as you want :)

Click here to see my signature:

Spoiler

ALWAYS GOOD TO READ:

 

  • Moderators
Posted

@Bearpocalypse building on what FrancescoDiMuro stated, try something like this, should give you at least an idea that you can build off of.

 

;Replacement for your For Loop:

For $i = 1 To UBound($aUser) - 1
    $aTemp = StringSplit($aUser[$i], ",")
        If IsArray($aTemp) Then GUICtrlSetData($List1, StringReplace($aTemp[1], "CN=", ""))
Next

Now, one of our "regexperts" may come along and speed that up, but StringReplace seems to work fairly quickly against my AD account and its 200 groups :)

"Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball

How to get your question answered on this forum!

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...