Hey,
ich würde gerne von der Seite hier : https://get.adobe.com/flashplayer/?loc=de&promoid=KLXMF
Mir die Version anzeigen lassen die aktuell da steht.
Da diese sich ständig ändert müsste das natürlich dabei sein.
Quasi eine art Versionchecker.
Hey,
ich würde gerne von der Seite hier : https://get.adobe.com/flashplayer/?loc=de&promoid=KLXMF
Mir die Version anzeigen lassen die aktuell da steht.
Da diese sich ständig ändert müsste das natürlich dabei sein.
Quasi eine art Versionchecker.
Nein muss es nicht
Sollte funktionieren, hab's selber aber noch nie verwendet.
Im engl. (und vermutlich auch im deutschen) Forum gibt es viele Beispiele z.B. hier.
Das hilft mir nicht wirklich weiter, kann mit
Opt("GUIOnEventMode", 1)nicht arbeiten.
Func AdminGUI()
GUISetState(@SW_SHOW,$AdminGUI)
While 1
$nMsg = GUIGetMsg()
Select
Case $nMsg = $GUI_EVENT_CLOSE
Exit
Case $nMsg = $ZeigButton2
GUISetState(@SW_SHOW, $NormalGUI)
GUISetState(@SW_HIDE, $AdminGUI)
NormalGUI()
Case $nMsg = $AdminSearchButton
_AD_Open()
Local $ReadUserSearch = GUICtrlRead($AdminSearch)
Local $User = _AD_GetObjectsInOU("", "(|(name=" & $ReadUserSearch & ")(sn=" & $ReadUserSearch & ")(company=" & $ReadUserSearch & ")(Givenname=" & $ReadUserSearch & ")(telephoneNumber=" & $ReadUserSearch & ")(department=" & $ReadUserSearch & ")(sAMAccountName=" & $ReadUserSearch & ")(mail=" & $ReadUserSearch & "))", 2, "name,mail,telephoneNumber,department,company")
_GUICtrlListView_DeleteAllItems($ListViewUserData)
_ArrayDelete($User,0)
_GUICtrlListView_AddArray($ListViewUserData,$User)
Local $ADGroup = _AD_GetUserGroups($ReadUserSearch)
Local $aListViewUserGroupData[UBound($ADGroup)][1]
For $i = 0 To UBound($aListViewUserGroupData) - 1
$aListViewUserGroupData[$i][0] = StringRegExpReplace($ADGroup[$i], 'CN=(.+?),.+', '$1')
Next
_GUICtrlListView_DeleteAllItems($ListViewUserGroupData)
_ArrayDelete($aListViewUserGroupData, 0)
_GUICtrlListView_AddArray($ListViewUserGroupData, $aListViewUserGroupData)
Case $nMsg = $AdminSearchButton2
_AD_Open()
Local $ReadUserSearch = GUICtrlRead($AdminSearch2)
Local $ADGroup = _AD_GetUserGroups($ReadUserSearch)
Local $aListViewUserGroupData[UBound($ADGroup)][1]
Local $User = _AD_GetObjectsInOU("", "(|(name=" & $ReadUserSearch & ")(sn=" & $ReadUserSearch & ")(company=" & $ReadUserSearch & ")(Givenname=" & $ReadUserSearch & ")(telephoneNumber=" & $ReadUserSearch & ")(department=" & $ReadUserSearch & ")(sAMAccountName=" & $ReadUserSearch & ")(mail=" & $ReadUserSearch & "))", 2, "name,mail,telephoneNumber,department,company")
;~ _GUICtrlListView_DeleteAllItems($ListViewUserData)
_ArrayDelete($User,0)
_GUICtrlListView_AddArray($ListViewUserData,$User)
For $i = 0 To UBound($aListViewUserGroupData) - 1
$aListViewUserGroupData[$i][0] = StringRegExpReplace($ADGroup[$i], 'CN=(.+?),.+', '$1')
Next
_GUICtrlListView_DeleteAllItems($ListViewUserGroupData2)
_ArrayDelete($aListViewUserGroupData, 0)
_GUICtrlListView_AddArray($ListViewUserGroupData2, $aListViewUserGroupData)
EndSelect
WEnd
EndFunc
Alles anzeigen
Das müsste doch irgendwie da eingebaut werden oder nicht?
10 & 12
Ich habe 2 ListViews & 2 Inputfelder um von 2 verschiedenen Leuten die Gruppen anzeigen zu lassen.
Ist es möglich per Drag&Drop die eine Gruppe in die ListView zu ziehen, damit die andere Person diese Gruppe auch bekommt im AD?
Wie würde man das ungefähr realisieren - welchen Syntax bräuchte ich da?
_GUICtrlListView_CopyItems ?? Das wäre so eins der wichtigsten Features
Alles was Grün makiert ist, ist bereits erledigt. Hätte ich vielleicht oben dazu schreiben sollen
5 und 6 wurden einfach mal so in den Raum geworfen - halte es auch für ziemlich unnötig.
Hallo Leute,
ich arbeite seit Wochen daran für meinen Betrieb ein Programm zu schreiben um einige Sachen zu erleichtern.
Da ich sehr unerfahren im Thema Autoit & Programmieren bin benötige ich dabei hilfe.
Ich bin immer wieder auf der Suche nach dem richtigen Syntax für einige funktionen oder verzweifel daran die Befehle richtig zu nutzen.
Ich bin für jede Hilfe dankbar
* = ICH PACK DAS!!!!
7.
Wenn du im Netzwerk bist und willst das Script ausführen reicht bei _AD_Open() die Klammern leer zu lassen.
Func _GroupView()
_AD_Open()
Local $cnt = UBound(_GUICtrlListBox_GetSelItems($Ber_lstGruppen))-1 ;Anzahl der ausgewählten Gruppen aus der Liste
Local $names = _GUICtrlListBox_GetSelItemsText($Ber_lstGruppen) ;ausgewählte Gruppen aus der Liste
_ArrayDelete($names, 0)
If $cnt < 1 Then
MsgBox(0, "", "Bitte wählen Sie mindestens eine Gruppe aus!")
Else
GUISetState(@SW_ENABLE, $frmGroupView)
For $i = 0 To $cnt - 1
_GUICtrlListView_AddColumn($frmGrp_lstGroupView, String($names[$i]), 150, 0) ;Überschriften füllen
Next
For $grp In $names
$grp = _AD_SamAccountNameToFQDN($grp) ;Umwandeln des SamAccountName zum FQDN
local $aGrpMember = _AD_GetGroupMembers($grp) ;Einlesen der Grp-Member
local $sMemberFull, $sMember = ""
_ArrayDelete($aGrpMember, 0)
For $i = 0 To UBound($aGrpMember) - 1
$aGrpMember[$i] = _AD_FQDNToDisplayname($aGrpMember[$i]) ;Umwandeln des jeweiligen Usernames zum Displayname
Next
_ArraySort($aGrpMember, 0)
For $i = 0 To UBound($aGrpMember) - 1
If $i = UBound($aGrpMember) - 1 Then
$sMember = $sMember & $aGrpMember[$i]
If $grp = $names[0] Then
$sMemberFull = $sMember
Else
$sMemberFull = $sMemberFull & "#" & $sMember
EndIf
Else
$sMember = $sMember & $aGrpMember[$i] & ";"
EndIf
Next ;>> Erstellen eines Strings der Usernames
Next
local $aMemberFull = StringSplit($sMemberFull, "#") ;Erstellen eines 1D-Arrays
_ArrayDelete($aMemberFull, 0)
local $aMemberArray[1][UBound($aMemberFull)] ;Initialisieren eines 2D-Arrays
For $i = 0 To UBound($aMemberFull) - 1
$aMemberDetail = StringSplit($aMemberFull[$i], ";")
_ArrayDelete($aMemberDetail, 0)
If UBound($aMemberDetail) - 1 > UBound($aMemberArray) - 1 Then
ReDim $aMemberArray[UBound($aMemberDetail)][UBound($aMemberFull)]
EndIf
For $j = 0 To UBound($aMemberDetail) - 1
$aMemberArray[$j][$i] = $aMemberDetail[$j]
Next
Next
_GUICtrlListView_AddArray($frmGrp_lstGroupView, $aMemberArray) ;>> eintragen der Usernamen in die listview
GUISwitch($frmGroupView)
GUISetState(@SW_SHOW)
EndIf
_AD_Close()
EndFunc
Alles anzeigen
$iResult = _AD_Open("DJ", "password of DJ")
$iResult = _AD_Open("microsoft\DJ", "password of DJ")
$iResult = _AD_Open("DJ@microsoft.com", "password of DJ")
Quelle: https://www.autoitscript.com/wiki/Active_Di…y_UDF_-_General
Funktioniert genau so gut. Danke euch beiden
Das bringt ein Fehlerscreen.
Water.png
Wie ich oben schon schrieb, musste ich spekulieren, was Dein ListView und die Array-Rückgabe angeht.
Hättest Du Dein Script gepostet und mehr Infos geliefert, dann hättest Du schon längst das richtige Ergebnis.Wenn Du nur den einen Wert brauchst, dann reicht ja auch eine Spalte im Listview.
Demzufolge müsste das dann eher so aussehen:AutoIt Alles anzeigen#include <Array.au3> #include <GuiListView.au3> GUICreate('Test', 400, 300) $idListview = GUICtrlCreateListView('Gruppe', 10, 10, 380, 250) GUISetState(@SW_SHOW) Global $aADGroup = ['CN=asdf,OU=Wert,OU=Wert,DC=Wert,DC=Wert', 'CN=jklö,OU=Wert,OU=Wert,DC=Wert,DC=Wert', 'CN=yxcv,OU=Wert,OU=Wert,DC=Wert,DC=Wert'] ; <- als Beispiel für die Rückgabe von _AD_GetUserGroup() ;~ _ArrayDisplay($aADGroup) Global $aListView[UBound($aADGroup)][1] ; <- ein entsprechend großes 2D-Array erstellen For $i = 0 To UBound($aADGroup) - 1 ; alle Einträge aus dem AD-Array durchlaufen $aListView[$i][0] = StringRegExpReplace($aADGroup[$i], 'CN=(.+?),.+', '$1') ; Gruppe als Item eintragen Next _GUICtrlListView_AddArray($idListview, $aListView) Do Until GUIGetMsg() = -3
Funktioniert perfekto !
Danke
Lese mir dann mal alles mögliche zum Thema Array & StringRegExReplace durch um es zu verstehen
Edit : Es können auch wesentlich mehr Rechte sein als 20.
Global $aListView[UBound($aADGroup)][3] ; <- ein entsprechend großes 2D-Array erstellen
For $i = 0 To UBound($aADGroup) - 1 ; alle Einträge aus dem AD-Array durchlaufen
$aListView[$i][0] = $aADGroup[$i] ; Gruppe als Item eintragen
$aListView[$i][1] = '' ; <- hier kannst Du noch Einträge für die SubItems vornehmen
$aListView[$i][2] = '' ; <- hier kannst Du noch Einträge für die SubItems vornehmen
Next
Wäre jemand so nett es mir zu erklären, was genau da passiert ?
Soweit klappt es aufjedenfall. Im ListView steht jetzt CN=Wert,OU=Wert,OU=Wert,DC=Wert,DC=Wert
Gibt es die möglichkeit nur den Wert von CN zu haben ohne die restlichen Sachen?
$aListView[$i][0] = Stringreplace($aADGroup[$i],"CN=","")
$aListView[$i][1] = Stringreplace($aADGroup[$i],"DC=","")
Das klappt nicht so ganz >:D
Naja, ich kenne Dein ListView nicht und weiß nicht, was Du als Array zurückbekommst, deswegen muss ich etwas spekulieren, aber ich denke das müsste dann so aussehen:
AutoIt Alles anzeigen#include <Array.au3> #include <GuiListView.au3> GUICreate('Test', 400, 300) $idListview = GUICtrlCreateListView('Gruppe|SubItem1|SubItem2', 10, 10, 380, 250) GUISetState(@SW_SHOW) Global $aADGroup = ['1.Gruppe', '2.Gruppe', '3.Gruppe'] ; <- als Beispiel für die Rückgabe von _AD_GetUserGroup() ;~ _ArrayDisplay($aADGroup) Global $aListView[UBound($aADGroup)][3] ; <- ein entsprechend großes 2D-Array erstellen For $i = 0 To UBound($aADGroup) - 1 ; alle Einträge aus dem AD-Array durchlaufen $aListView[$i][0] = $aADGroup[$i] ; Gruppe als Item eintragen $aListView[$i][1] = '' ; <- hier kannst Du noch Einträge für die SubItems vornehmen $aListView[$i][2] = '' ; <- hier kannst Du noch Einträge für die SubItems vornehmen Next _GUICtrlListView_AddArray($idListview, $aListView) Do Until GUIGetMsg() = -3
Werde es mir am Montag mal anschauen. Vielen Dank schon mal dafür
Hallo @Kazume,
Sollte aus dem Bsp. von Oscar hervorgehen. Allerdings möchte ich dich doch noch darauf hinweisen, dass du in deinem Bsp. Ubound falsch verwendest.
Code$Groups = _AD_GetUserGroups(@Username) For $i = 0 To UBound -1 _GUICtrlListView_AddItem($GUI,$Groups) Next
So geht das nicht. Siehe Bsp. von Oscar und Autoit-Hilfe.
Also innerhalb der () noch die Variable angeben die das Array beinhaltet ?
Oder Du generierst Dir aus der Array-Rückgabe ein 2D-Array mit den entsprechenden Daten und benutzt dann _GUICtrlListView_AddArray.
Wie würde das dann aussehen?
Kann leider am Wochende nicht weiter am Script arbeiten.
Wie würde man das dann realisieren?
_GUICtrlListView_AddItem ?
Solange eine Schleife laufen lassen bis alle Informationen von _AD_GetUserGroups im ListView stehen?
Hey,
ich würde gerne alle Gruppen auflisten die ein Benutzer hat.
_AD_Open()
Local $Groups = _AD_GetUserGroups(@UserName)
_GUICtrlListView_AddArray($Gruppen,$Groups)
_AD_Close()
GuiListView.au3" (474) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
DllStructSetData($tBuffer, "Text", $aItems[$iI][0])
DllStructSetData($tBuffer, "Text", ^ ERROR
Wo liegt der Fehler?
_AD_Open() fehlt wahrscheinlich oder?
Func _UserInfo() ; Finished
_AD_Open()
Global $Lesen = GUICtrlRead($sInput)
Global $aUser = _AD_GetObjectsInOU("", "(|(name=" & $Lesen & ")(sn=" & $Lesen & ")(Givenname=" & $Lesen & ")(telephoneNumber=" & $Lesen & ")(sAMAccountName=" & $Lesen & ")(mail=" & $Lesen & "))", 2, "name,mail,telephoneNumber")
If @error Then
MsgBox(0,"error","Die Person mit dem Namen/Mail/Nr wurde nicht gefunden.")
Else
_GUICtrlListView_DeleteAllItems($ListViewUser)
_ArrayDelete($aUser, 0)
_GUICtrlListView_AddArray($ListViewUser,$aUser)
EndIf
Local $ViewSectionName = _GUICtrlListView_FindInText($ListViewUser,"name")
Local $SectionValue = IniRead("Urlaub.ini",$ViewSectionName,"Urlaub")
_GUICtrlListView_SetItemText($ListViewUser,4,$SectionValue)
Endfunc
Alles anzeigen
Hatte unter dem EndIf jetzt die Zeilen noch hinzugefügt.
Das steht z.B. in der Ini File
[Kazume]
Urlaub=01.09 bis 25.09
Wenn ich nach einem Benutzer suchen möchte, der auch eine Section in der Ini File hat dann soll der Wert bei Urlaub in der ListView hinzugefügt werden.
Name Email Telefon-Nr Urlaub
Kazume Kazume@mail.de 1000 01.09 bis 25.09
Weiß nicht ob das von relevanz ist das die ersten 3 ( Name,Email,Telefon Nr) von einem Array befüllt werden.
Hey,
jetzt wird es für mich richtig kompliziert und ich mit meinen "skills" am ende.
Ich habe eine ListView die ich mit einem Array befüllen lasse.
Bei dem Urlaub würde ich gerne den Wert aus einer ini File auslesen lassen, dabei soll kontrolliert werden ob [Section] dem Name entspricht.
Ansonsten soll bei Urlaub einfach Nein stehen.
Name Email Telefon-Nr Urlaub
Kazume Kazume@mail.de 1000 WertAusFile
oder
Name Email Telefon-Nr Urlaub
Kazume Kazume@mail.de 1000 Nein
Wenn Section aus Ini file gleich Name aus ListView, dann schreibe Key Value dahin.
Wenn nicht dann schreibe einfach Nein dahin.
Funktioniert wunderbar vielen dank
Ich lasse mir Benutzer in einer ListView ausgeben.
Die erste reihe im ListView besteht aus Zahlen. Wie kann man diese entfernen?
Func _Normal()
_AD_Open()
Global $Lesen = GUICtrlRead($sInput)
Global $aUser = _AD_GetObjectsInOU("", "(|(name=" & $Lesen & ")(sn=" & $Lesen & ")(Givenname=" & $Lesen & ")(telephoneNumber=" & $Lesen & ")(sAMAccountName=" & $Lesen & ")(mail=" & $Lesen & "))", 2, "name,mail,telephoneNumber")
If @error Then
MsgBox(0,"error","Die Person mit dem Namen/Mail/Nr wurde nicht gefunden.")
Else
_GUICtrlListView_DeleteAllItems($ListViewUser)
_GUICtrlListView_AddArray($ListViewUser,$aUser)
EndIf
Endfunc
Alles anzeigen
Du solltest in Deiner GUI eine Listview einbauen in der Du dann alle Felder des Arrays anzeigst.
Denn die Abfragen können mehr als einen Treffer liefern (z.B. Bei Abfrage nach Vorname).
Ich habe in meiner GUI eine Listview eingebaut.
Quick&Dirty und noch nicht mit allen Such- bzw. Anzeigefeldern befüllt:
Code#include <AD.au3> Global $sInput = InputBox("Suche nach AD Konten", "Bitte geben Sie Name, Vorname, Telefonnummer, Loginname oder E-Mail ein:") If @error <> 0 Then Exit _AD_Open() Global $aUser = _AD_GetObjectsInOU("", "(|(name=" & $sInput & ")(sn=" & $sInput & ")(Givenname=" & $sInput & ")(telephoneNumber=" & $sInput & ")(sAMAccountName=" & $sInput & ")(mail=" & $sInput & "))", 2, "name,mail,telephoneNumber,profilePath,displayname") _ArrayDisplay($aUser)
Mit _GUICtrlListView_AddArray($ListView1,$aUser) listet er mir dann auch die benötigten Informationen auf.
Das Problem dabei ist folgendes :
Es wird eine seperate InputBox erstellt, ich würde schon gerne innerhalb der GUI eine Inputbox haben, allerdings funktioniert genau das hier nicht.
Mit Global $sInput = GUICtrlCreateInput("", 704, 176, 89, 21) klappt es nicht. Die Felder bleiben leer und es wird kein innhalt ausgegeben.
Wenn ich die GUICTRLCreateInput innerhalb der funktion erst erzeugen lassen ( was allerdings auch zuspät schon ist ) funktioniert es zwar, aber es listet
mir dann alle Benutzer des AD's auf ohne das, dass Feld voll sein muss mit Input.
Ich hoffe das war deutlich genug?
Edit : Habe es mit GUICtrlRead lösen können.
Wie entfernt man eigentlich die Zahlen in der ListView? Die erste Zahl zählt die Einträge & die zweite ist immer auf 5 ?