Hallo zusammen,
ich habe irgendwie so etwas wie ein Brett vor Kopf .... darum mein Hilferuf an ans Forum
Problem:
Über eine GUI gebe ich einen Usernamen an und suche mittels AD_open + AD_GetUserGroups alle Gruppenzugehörigkeiten des Users in der aktuellen Domäne. Das schreibe ich in ein Array, welches ich z.B. anzeigen lasse oder über _ArrayToClip in die Zwischenablage sende, um das dann in ein neue Datei zu schreiben.
Soweit sogut .....
Für das weitere 'Processing' benötige ich aber nur ein Subset der gefundenen Gruppen - nämlich alle diejenigen, die
(z.B.) CN=Grp_Sec_ beginnen.
Über _ArrayFindAll bekomme ich zwar den 'Index' - also die Zeile an der ein Treffer gefunden wurde, aber nicht den eigentlichen Gruppennamen.
Genau diesen benötige ich aber .....
Bsp. der gefundenen Gruppen
0 [7
1 [CN=Grp_App_....
2 [CN=Grp_App_....
3 [CN=Grp_App_....
4 [CN=Grp_App_....
5 [CN=Grp_Sec_....
6 [CN=Grp_Sec_....
7 [CN=Grp_Sec_....
_ArrayFindAll ergibt --> 5,6,7 leider nicht [CN=Grp_Sec_...., [CN=Grp_Sec_...., [CN=Grp_Sec_....
Bin für jeden tip oder Anregung dankbar
#include <AD.au3>
#include <Array.au3>
#include <file.au3>
#include <ButtonConstants.au3>
#include <GUIConstants.au3>
;~ #include <MyArrayDisplay.au3>
#include <MyArrayDisplay_new.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("User Object Properties", 266, 224, 193, 115)
$Radio1 = GUICtrlCreateRadio("Domäne: xy.z.com", 45, 120, 169, 25)
GUICtrlSetState(-1, $GUI_CHECKED)
$Label1 = GUICtrlCreateLabel("Bitte Usernamen eingeben:", 16, 16, 223, 17)
$Label2 = GUICtrlCreateLabel("(z.B. Max.Mustermannc)", 16, 40, 223, 17)
$Input1 = GUICtrlCreateInput("", 16, 72, 217, 21)
GUICtrlSetState($Input1, $GUI_FOCUS)
$OKButton = GUICtrlCreateButton("OK", 16, 180, 97, 25, $BS_DEFPUSHBUTTON)
$CancelButton = GUICtrlCreateButton("Cancel", 140, 180, 97, 25, 0)
$Group1 = GUICtrlCreateGroup("Domain", 16, 104, 217, 50)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $aProperties[1][2], $aProperties1[1][2]
Dim $aRecords, $text, $cdeUsernames, $cdeADSNames, $var1, $var2
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $CancelButton
Exit
Case $OKButton
$cdeUsernames = GUIctrlread($Input1)
If $cdeUsernames = "" Or $cdeUsernames = "... hier den Usernamen eingeben ..." Then
MsgBox(16, "Error", "Es wurde kein Username angegeben.")
GUICtrlSetData($Input1, " ... hier den Usernamen eingeben ...")
GUICtrlSetState($Input1, $GUI_FOCUS)
$cdeUsernames = GUIctrlread($Input1)
Else
GUISetState(@SW_HIDE)
If GUICtrlRead($Radio1) = $GUI_CHECKED Then
$sAD_UserIdParam =
$sAD_PasswordParam =
$sAD_DNSDomainParam =
$sAD_HostServerParam =
$sAD_ConfigurationParam =
Else
MsgBox(0,"","Kein Radio-Button aktiv - kann eigentlich nicht sein")
Exit
EndIf
_AD_Open($sAD_UserIdParam, $sAD_PasswordParam, $sAD_DNSDomainParam, $sAD_HostServerParam, sAD_ConfigurationParam)
$sFQDN_User = _AD_SamAccountNameToFQDN($cdeUsernames)
$cdeADSNames = _AD_GetObjectAttribute($sFQDN_User, "ExtensionAttribute2")
$sSamAccount_User = _AD_FQDNToSamAccountName($cdeUsernames)
$aProperties = _AD_GetUserGroups($sFQDN_User, $var1)
If $aProperties <> "" Then
$aiResult = _ArrayFindAll($aProperties, "CN=Grp_Sec_",0,0,0,1,0)
_MyArrayDisplay($aiResult, $cdeUsernames & " - Eigenschaften","500|100")
_ArrayToClip($aiResult, 1)
$cdeFile = FileOpen("Groups.txt",1)
$cdeText = ClipGet()
FileWrite($cdeFile, $cdeText)
FileClose($cdeFile)
Run("C:\Program Files\Windows NT\Accessories\wordpad.exe Groups.txt")
_AD_Close()
Exit
Else
MsgBox(16, "Error", "Keine Informationen zum Userobjekt [ " & $cdeUsernames & " ] gefunden.")
Exit
EndIf
EndIf
EndSwitch
WEnd