Hallo Zusammen,
ich habe mal angefangen eine Oberfläche für die AD Funktion "_AD_GetManagedBy" zu erstellen.
Was jetzt noch im Script fehlt, ist ein Refresh der Ansicht, nach hinzufügen bzw. Löschen von Usern der Gruppe. Hier fehlt mir aber gerade der Ansatz, wie ich das am Besten einfüge.
C
#include <D:\Data\scripte\AD_1.4.11.0_Functions\AD.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <GuiListView.au3>
#include <GuiButton.au3>
If Not FileExists(@ScriptDir & "/pic") Then DirCreate(@ScriptDir & "/pic")
FileInstall("D:\Data\scripte\AD_Groups/User.gif", @ScriptDir & "/pic/User.gif",1)
FileInstall("D:\Data\scripte\AD_Groups/Users_Group.gif", @ScriptDir & "/pic/Users_Group.gif",1)
FileInstall("D:\Data\scripte\AD_Groups/User_add.gif", @ScriptDir & "/pic/User_add.gif",1)
FileInstall("D:\Data\scripte\AD_Groups/User_delete.gif", @ScriptDir & "/pic/User_delete.gif",1)
_AD_Open()
$user = @username
$aManagedBy = _AD_GetManagedBy($user)
If @error > 0 Or $aManagedBy[0][0] = 0 Then
MsgBox(64, "Active Directory Functions - Example 1", "No managed groups could be found")
$bNotFound = True
Else
;_ArrayDisplay($aManagedBy, "Active Directory Functions - Example 1 - groups managed by")
;MsgBox(0,"",_AD_FQDNToSamAccountName($aManagedBy[1][0]))
EndIf
$sFQDN = _AD_SamAccountNameToFQDN($user)
; Get the Display Name for the current User
$sDisplayName = _AD_FQDNToDisplayname($sFQDN)
;MsgBox(0,"",$sDisplayName)
; Create a GUI with various controls.
$hgui = GUICreate("Groupmanager")
$pic1 = GUICtrlCreatePic(@ScriptDir & "/pic/User.gif",20,20,40,40)
$userlabel1 = GUICtrlCreateLabel("Manager: " & $sDisplayName ,80,30,200,20)
$grouplabel1 = GUICtrlCreateLabel("Managed Groups ",20,100,180,20)
$listview1 = GUICtrlCreateListView("Group Name", 20, 120, 320, 200,0x0004)
_GUICtrlListView_SetColumnWidth($listview1, 0,316)
For $i = 1 to $aManagedBy[0][0]
;MsgBox(0,"",$aManagedBy[$i][0])
GUICtrlCreateListViewItem(_AD_FQDNToSamAccountName($aManagedBy[$i][0]), $listview1)
Next
_GUICtrlListView_SetItemSelected($listview1, 0)
$view_members = GUICtrlCreateButton("View Members", 20, 340, 120, 25)
; Display the GUI.
GUISetState(@SW_SHOW, $hgui)
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $view_members
$selected_item = ControlListView($hgUI, "", $listview1, "GetSelected")
$selected_item = Number($selected_item) ;String wird in Number formatiert
$selected_group = _GUICtrlListView_GetItemText($listview1, $selected_item)
_EditgroupMembers($selected_group)
EndSwitch
WEnd
; Delete the previous GUI and all controls.
GUIDelete($hgui)
_AD_Close()
Func _EditgroupMembers($selected_group)
;MsgBox(0,"2",$selected_group)
$aMembers = _AD_GetGroupMembers($selected_group) ; hier den AD gruppennamen eintragen AD-Gruppenname
If @error > 0 Then
MsgBox(64, "Active Directory Functions", "The group has no members")
Else
_ArraySort($aMembers, 0, 1)
;ArrayDisplay($aMembers, "Active Directory Functions - Example 1 - List of members for group")
EndIf
$gui1 = GUICreate("Edit Group Members")
$pic2 = GUICtrlCreatePic(@ScriptDir & "/pic/Users_Group.gif",20,20,40,40)
$grouplabel2 = GUICtrlCreateLabel($selected_group ,80,30,200,20)
$listview2 = GUICtrlCreateListView("Name|Anmeldename", 20, 120, 320, 200,0x0004)
For $i = 1 to $aMembers[0]
$sFQDN = _AD_SamAccountNameToFQDN()
$aMembers01 = _AD_FQDNToDisplayname($aMembers[$i])
$sSamAccountName = _AD_FQDNToSamAccountName($aMembers[$i])
;MsgBox(0,"", $aMembers01)
;MsgBox(0,"", $sSamAccountName)
;GUICtrlCreateListViewItem($aMembers01, $listview2)
GUICtrlCreateListViewItem($aMembers01 & "|" & $sSamAccountName , $listview2)
Next
;_GUICtrlListView_SetColumnWidth($listview2, 0,316)
_GUICtrlListView_SetColumnWidth($listview2, 0,213)
$add_members = GUICtrlCreateButton("+ Add", 20, 340, 80, 25, 0x0080)
$remove_members = GUICtrlCreateButton("- Remove", 110, 340, 80, 25, 0x0080)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
GUIDelete($gui1)
ExitLoop
Case $add_members
;MsgBox(0,"","Add")
_add_groupMembers()
Case $remove_members
$selected_item = ""
$selected_item = ControlListView($gui1, "", $listview2, "GetSelected")
If $selected_item = "" Then
MsgBox(0,"Info","Bitte eine Auswahl Treffen...")
Else
$selected_item = Number($selected_item) ;String wird in Number formatiert
$selected_user = _GUICtrlListView_GetItemText($listview2, $selected_item)
$selected_user_anmelde = _GUICtrlListView_GetItemText($listview2, $selected_item,1)
$t = MsgBox(4,"Achtung","Der folgende User wird aus der Gruppe entfernt!" & @CRLF & @CRLF & $selected_user)
If $t = 6 Then
;MsgBox (0,"","you have pressed Yes")
;MsgBox(0,"",$selected_group)
$sGroup = $selected_group
$sUser = $selected_user_anmelde
$iValue = _AD_RemoveUserFromGroup($sGroup, $sUser)
If $iValue = 1 Then
MsgBox(64, "Active Directory Functions - Example 1", "User '" & $sUser & "' successfully removed from group '" & $sGroup & "'")
ElseIf @error = 1 Then
MsgBox(64, "Active Directory Functions - Example 1", "Group '" & $sGroup & "' does not exist")
ElseIf @error = 2 Then
MsgBox(64, "Active Directory Functions - Example 1", "User '" & $sUser & "' does not exist")
ElseIf @error = 3 Then
MsgBox(64, "Active Directory Functions - Example 1", "User '" & $sUser & "' is not a member of group '" & $sGroup & "'")
Else
MsgBox(64, "Active Directory Functions - Example 1", "Return code '" & @error & "' from Active Directory")
EndIf
ElseIf $t = 7 Then
;MsgBox (0,"","you have pressed No")
EndIf
EndIf
EndSwitch
WEnd
EndFunc
Func _add_groupMembers()
$gui2 = GUICreate("Add Group Members")
$pic2 = GUICtrlCreatePic(@ScriptDir & "/pic/User_add.gif",20,20,40,40)
$grouplabel2 = GUICtrlCreateLabel($selected_group ,80,30,200,20)
GUICtrlCreateLabel("Add User: ", 40, 80, 231, 17)
$add_user = GUICtrlCreateInput("", 120, 80, 180, 21)
$OK = GUICtrlCreateButton("OK", 20, 340, 80, 25, 0x0080)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
GUIDelete($gui2)
ExitLoop
Case $OK
$sUser = GUICtrlRead($add_user)
$sGroup = $selected_group
; Add user to group
Global $iValue = _AD_AddUserToGroup($sGroup, $sUser)
If $iValue = 1 Then
MsgBox(64, "Active Directory Functions - Example 1", "User '" & $sUser & "' successfully assigned to group '" & $sGroup & "'")
ElseIf @error = 1 Then
MsgBox(64, "Active Directory Functions - Example 1", "Group '" & $sGroup & "' does not exist")
ElseIf @error = 2 Then
MsgBox(64, "Active Directory Functions - Example 1", "User '" & $sUser & "' does not exist")
ElseIf @error = 3 Then
MsgBox(64, "Active Directory Functions - Example 1", "User '" & $sUser & "' is already a member of group '" & $sGroup & "'")
Else
MsgBox(64, "Active Directory Functions - Example 1", "Return code '" & @error & "' from Active Directory")
EndIf
EndSwitch
WEnd
EndFunc
Alles anzeigen
Die GUI für die +add Funktion ist auch noch nicht komplett. Man kann aber schon User in die Gruppe aufnehmen.
Das Hinzufügen und Löschen der User aus der Gruppe funktioniert jetzt. (siehe Bilder)
Im Suchfeld kann der Login oder der Name eingeben werden. Dabei werden die Sucheinträge dynamisch geändert.
Gruß gmmg