SetInfo Error überspringen

  • Hey,

    ich habe ein Tool gebastelt, mit dem man Benutzer aus einer TXT-Datei in eine NT4 Domänen anlegen lassen kann.
    Funktioniert bislang alles super, alelrdings habe ich ein Problem. Wenn Benutzer bereits vorhanden sind, bricht das Programm ab mit dem Fehler "The requested action with this object has failed" und der Fehler liegt beim SetInfo(). Das ist auch klar, da der Benutzer nicht zweimal extieren darf. Dies möchte ich verhindern. Es soll stattdessen ein LOG-File geschrieben werden mit den Errors und die eingelesene TXT-Datei weiter abgearbeitet werden. Eine Rückmeldung über die Anzahl der angelegten und nicht angelegten Benutzer wäre auch noch nett :)

    Hier der bisherige Code

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <file.au3>
    #include <GuiListView.au3>
    #include <date.au3>

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("UserPad - Benutzer", 400, 450) ; will create a dialog box that when displayed is centered
    GUISetState (@SW_SHOW) ; will display an empty dialog box
    Dim $Items
    ;Auswahl der TXT Datei für Benutzer
    $Input_TXTFile = GUICtrlCreateInput("", 10, 20)
    $Btn_BrowseTXTFile = GUICtrlCreateButton("Durchsuchen", 220, 17)
    $Btn_CreateUser = GUICtrlCreateButton("Benutzer anlegen", 300, 17)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlCreateLabel ("Anzahl der ausgelesenen Benutzern: ", 10, 50)
    $Label_Listview_items = GUICtrlCreateLabel ("0", 190, 50, 40)
    $Progressbar_UserState = GUICtrlCreateProgress(10, 75, 380, 10, $PBS_SMOOTH)
    ;Listbox mit allen in der TXT-Datei enthaltenen Benutzern
    $Listview_User = GUICtrlCreateListView("Benutzername |Nachname |Vorname |Passwort |Klasse", 10, 100, 380, 300)

    [/autoit] [autoit][/autoit] [autoit]

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

    Switch $msg
    Case $Btn_BrowseTXTFile
    $Dest_TXTFile = FileOpenDialog("Bitte wählen Sie eine Datei aus", "", "TXT-Datei (*.txt)")
    GUICtrlSetData($Input_TXTFile, $Dest_TXTFile)
    If $Dest_TXTFile <> "" Then
    $line = 1
    GUICtrlSetState($Btn_CreateUser, $GUI_DISABLE)
    GUICtrlSetState($Btn_BrowseTXTFile, $GUI_DISABLE)
    GUICtrlSetState($Input_TXTFile, $GUI_DISABLE)
    While 1
    $read = FileReadLine($Dest_TXTFile,$line)
    If @error = -1 Then ExitLoop
    $fill = ""
    $line = $line + 1
    $split = StringSplit($read,";")
    for $n = 1 to 5
    $fill = $fill & $split[$n] & "|"
    Next
    GUICtrlCreateListViewItem($fill,$Listview_User)
    $Listview_items = _GUICtrlListViewGetItemCount($Listview_User)
    GUICtrlSetData($Label_Listview_items, $Listview_items)

    [/autoit] [autoit][/autoit] [autoit]

    WEnd
    Else
    MsgBox(64, "Fehler", "Sie haben keine Datei ausgewählt")
    EndIf
    GUICtrlSetState($Btn_CreateUser, $GUI_ENABLE)
    GUICtrlSetState($Btn_BrowseTXTFile, $GUI_ENABLE)
    GUICtrlSetState($Input_TXTFile, $GUI_ENABLE)
    Case $Btn_CreateUser
    GUICtrlSetState($Btn_CreateUser, $GUI_DISABLE)
    GUICtrlSetState($Btn_BrowseTXTFile, $GUI_DISABLE)
    GUICtrlSetState($Input_TXTFile, $GUI_DISABLE)
    ;Alle Benutzer aus der TXT-Datei werden hier angelegt
    $objUser = ObjGet("WinNT://VPC_NT4SRV_HH")
    For $i = 0 to $Listview_items -1
    ;Rechnung für Progressbar
    $Calc_Progressbar = $i/($Listview_items-1)*100
    GUICtrlSetData($Progressbar_UserState, $Calc_Progressbar)
    $Listview_column = _GUICtrlListViewGetItemText($Listview_User, $i)
    $split = StringSplit($Listview_column,"|")
    $NewUser = $objUser.Create("user",$split[1])
    $NewUser.FullName = $split[3] &" "&$split[2]
    $NewUser.Description = $split[5]&" Schüler - angelegt am "&_NowDate()&" um "&_NowTime()
    $NewUser.SetPassword($split[4])
    $NewUser.SetInfo()
    Next
    MsgBox(0,"Anzahl", "Es wurden von insgesamt "& $Listview_items &" Benutzern "& $i &" angelegt")

    EndSwitch

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    Wend

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Über eure Hilfe wäre ich wie immer sehr dankbar ;)
    PS: Bitte kein Kommentar warum NT4 Server :D

    Gruß
    ---EDIT: Statusbalken und Anzahl ergänzt. Problem ist immer noch das Gleich :D---

    Einmal editiert, zuletzt von hessebou (25. September 2007 um 15:24)

  • Hi,

    das werde ich morgen mal testen. Hab da was im englischem Forum gefunden, hoffe es funktioniert. Es werde Bericht erstatten und hoffe, dass ich morgen alles fertig bekomme. Vielleicht kann es ja noch jemand gebrauchen, solche Dinge sind für NT4 recht Rar :D
    Danke wieder einmal.

    Gruß