Profil auf Server erneuern

  • Hi, danke nochmal für den Ansatz, habe den Part jetzt so eingebaut:

    [autoit]

    $FileList_01 =_FileListToArray("\\" & $client & "\config$\" & $user & "\Profil.sicher\", "*",1) ;listet files
    ;If @Error=1 Then
    ;MsgBox (0,"","No Files\Folders Found.",1)
    ;Exit
    ;EndIf
    ;_ArrayDisplay($FileList_01,"$FileList")
    $FileList_02 =_FileListToArray("\\" & $client & "\config$\" & $user & "\Profil.sicher\", "*",2) ;listet ordner
    ;If @Error=1 Then
    ;MsgBox (0,"","No Files\Folders Found.",1)
    ;Exit
    ;EndIf
    ;_ArrayDisplay($FileList_02,"$FileList")
    For $x = 1 to $FileList_01[0]
    ;Msgbox(0,'Record:' & $x, $FileList_01[$x],1)
    FileDelete("\\" & $client & "\config$\" & $user & "\Profil.sicher\" & $FileList_01[$x])
    Next
    For $x = 1 to $FileList_02[0]
    ;Msgbox(0,'Record:' & $x, $FileList_02[$x],1)
    DirRemove("\\" & $client & "\config$\" & $user & "\Profil.sicher\" & $FileList_02[$x], 1)
    ;Next
    $sCommand00 = "del /F /S /Q \\" & $client & "\config$\" & $user & "\Profil.sicher\ntuser.pol"
    _RunDOS ( $sCommand00 )
    Next

    [/autoit]

    Bekomme jetzt aber eine Fehlermeldung:
    Error: Subscript used with non-Array variable

    Kann es sein das ich bei der $sCommand00 einen Fehler gemacht habe ?

  • Hier nochmal das Script, Fehlermeldung kommt nicht mehr, das löschen funktioniert soweit sehr gut, nur die verdammte ntuser.pol bekomme ich mit dem Script nicht gelöscht, nur Manuell.
    In den Eigenschaften ist diese als Schreibgeschützt markiert, denke das liegt daran :(


    Spoiler anzeigen
    [autoit]

    #include <file.au3>
    #Include <Array.au3>
    #include <Process.au3>
    If Not IsAdmin() Then
    ; Bis Version 3.2.10.0
    ;~ RRunAsSet("", @LogonDomain, "")
    ;~Run(@ScriptFullPath, @ScriptDir, @SW_HIDE)
    ;~ RunAsSet()
    ; AB Version 3.2.12.0
    RunAs("misteink", "EWENET", "Mc087047", 0, @ScriptFullPath, @ScriptDir, @SW_HIDE)
    Exit
    EndIf
    If IsAdmin() Then
    MsgBox(0, "", "Admin-Rechte erkannt.",1)
    EndIf
    Dim $client
    Dim $user
    $client = InputBox("Profil Server", "Gebe hier bitte den Server ein auf dem das Profil des Benutzers hinterlegt ist ( z.B.: HV-NT1 ):")
    $user = InputBox("Benutzer", "Gebe hier bitte den Benutzernamen ( Anmeldenamen ) des betreffenden Users an:")
    $quelle = "\\" & $client & "\config$\" & $user & "\Profil\*"
    $ziel = "\\" & $client & "\config$\" & $user & "\Profil.sic"
    If Not FileExists($quelle) Then
    MsgBox(0,$client, "Benutzer oder Server nicht bekannt!",5)
    Exit
    Else
    If Not FileExists($ziel) Then
    MsgBox(0,$client, "Ordner Profil.sic wird jetzt erstellt ...",3)
    DirCreate ($ziel)

    sleep(1000)

    MsgBox(0,$client, "Ordner wurde erfolgreich erstellt, der Kopiervorgang beginnt in wenigen Sekunden.",5)

    ;sleep(1000)

    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$client & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    Else
    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$client & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    EndIf
    EndIf
    sleep(2000)
    $FileList_01 =_FileListToArray("\\" & $client & "\config$\" & $user & "\Profil.sicher\", "*",1) ;listet files
    ;If @Error=1 Then
    ;MsgBox (0,"","No Files\Folders Found.",1)
    ;Exit
    ;EndIf
    ;_ArrayDisplay($FileList_01,"$FileList")
    $FileList_02 =_FileListToArray("\\" & $client & "\config$\" & $user & "\Profil.sicher\", "*",2) ;listet ordner
    ;If @Error=1 Then
    ;MsgBox (0,"","No Files\Folders Found.",1)
    ;Exit
    ;EndIf
    ;_ArrayDisplay($FileList_02,"$FileList")
    For $x = 1 to $FileList_01[0]
    ;Msgbox(0,'Record:' & $x, $FileList_01[$x],1)
    FileDelete("\\" & $client & "\config$\" & $user & "\Profil.sicher\" & $FileList_01[$x])
    Next
    For $x = 1 to $FileList_02[0]
    ;Msgbox(0,'Record:' & $x, $FileList_02[$x],1)
    DirRemove("\\" & $client & "\config$\" & $user & "\Profil.sicher\" & $FileList_02[$x], 1)
    Next
    $sCommand00 = "del /F /S /Q \\" & $client & "\config$\" & $user & "\Profil.sicher\ntuser.pol"
    _RunDOS ( $sCommand00 )
    sleep(2000)
    $anfrage = MsgBox(4,"","Möchtest du jetzt das Lokale Profil auf dem Client " & $client & " löschen?")

    If $anfrage = 6 Then
    MsgBox(0,"","Profil gelöscht.")
    Else
    MsgBox(0,"","Nichts passiert.")
    EndIf
    ;öffnet log
    ShellExecute("info.log", "", @ScriptDir)
    Func _copy($fromFile, $tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 256
    $winShell = ObjCreate("shell.application")
    $winShell.namespace ($tofile).CopyHere ($fromFile, $FOF_RESPOND_YES)
    If @error Then
    MsgBox(0, "", "the previous line got an error.")
    EndIf
    EndFunc ;==>copy

    [/autoit]

    Vielleicht gibt es wirklich keine Lösung in diesem Fall, Dr. Google konnte mir bis jetzt auch noch nicht helfen, ausser der Link den du mir geschickt hattest, da ist das Problem mit dem schreibschutz beschrieben.

    Edit Oscar: Spoiler gesetzt.

    Einmal editiert, zuletzt von Oscar (30. November 2010 um 10:35)

  • testet du mit einem alten profil?
    könnte sein, das es bei einem neueren profil, was eben noch im zugriff war, der server noch dateien im speicher nicht freigegeben hat!

    funktioniert daas löschen nach neustart des servers? bzw. könntest mal den explorer auf dem server im taskmanager schließen und dann das löschen testen!

    wenn sich die datei über cmd löschen lässt, muss es aber auch über autoit gehen ...
    kannst ja auch den schalter /A mit einbauen del /F /S /Q /A

    kannst du die ntuser.pol in ein anderes verzeichnis kopieren ? wenn ja, geht die da zu löschen?
    noch was anderes -->

    In this situation, you can use the Subinacl utility with the /onlyfile switch (this utility is included in the Resource Kit) to change ownership and permissions on a file that is otherwise inaccessible, for example:
    subinacl /onlyfile "\\?\c:\path_to_problem_file" /setowner=domain\administrator /grant=domain\administrator=FNote This command is a single command line it has been wrapped for readability.

    hab das aber noch nie benutzt!

    ansonsten wüsste ich jetzt auch erstmal nicht weiter.

    gmmg

    3 Mal editiert, zuletzt von gmmg (26. November 2010 um 11:53)

  • Moin moin nochmal :)

    heute morgen habe ich nochmal das scrippt getestet, und was soll ich sagen, es kommt ein Fehler :(
    Wenn ich das durchlaufen lassen, funktioniert es sehr gut, bis zur Meldung:

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)

    Dann bekomme ich den Fehler:
    Error: Subscript used with non-Array variable

    Irgendwo ist da plötzlich der Wurm drin, habe ich noch etwas übersehen ?

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <file.au3>
    #Include <Array.au3>
    #include <Process.au3>
    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\micholys\desktop\profil_neu.kxf
    $Form1_1 = GUICreate("BTC ServiceDesk Tool v0.1", 588, 620, 563, 122)
    $Group1 = GUICtrlCreateGroup(" Info ", 8, 16, 569, 593)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Mit diesem Tool hast du die Möglichkeit durch wenige Klicks schneller und", 32, 48, 519, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $Label3 = GUICtrlCreateLabel("einfacher bestimmte Aktionen durchzuführen.", 32, 72, 326, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Profilerneuerung = GUICtrlCreateGroup("Profilerneuerung", 16, 104, 553, 161)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("Für eine Profilerneuerung müssen der Server, der Benutzername und der Hostname", 26, 128, 497, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Benutzername = GUICtrlCreateInput("Benutzername", 232, 176, 113, 24)
    $Hostname = GUICtrlCreateInput("Hostname", 378, 176, 113, 24)
    $Profilserver = GUICtrlCreateInput("Profilserver", 85, 176, 113, 24)
    $Label1 = GUICtrlCreateLabel("eingetragen werden.", 27, 144, 126, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Starten = GUICtrlCreateButton("Starten", 200, 224, 177, 25, 0)
    ;+++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Aufraumen = GUICtrlCreateGroup("Rechner aufräumen", 16, 416, 553, 113)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Label5 = GUICtrlCreateLabel("Hiermit kannst du den Rechner des Anwenders aufräumen, damit er wieder mehr Platz auf", 24, 440, 531, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label6 = GUICtrlCreateLabel("seinem Rechner zu verfügung hat.", 24, 456, 204, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Hostnam = GUICtrlCreateInput("Hostname", 120, 488, 113, 24)
    $Starte = GUICtrlCreateButton("Starten", 352, 488, 113, 25, 0)
    ;+++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label7 = GUICtrlCreateLabel("Copyright by Micha Steinke", 432, 584, 133, 17)
    ;+++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++
    $Group2 = GUICtrlCreateGroup("Lokales Profil", 16, 280, 553, 121)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Label8 = GUICtrlCreateLabel("Hier kannst du das Lokale Profil auf dem Rechner löschen, denke aber daran das der", 24, 304, 509, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label9 = GUICtrlCreateLabel("Benutzer abgemeldet sein muß !!!", 24, 320, 201, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Starten", 352, 362, 113, 25, 0)
    $Input1 = GUICtrlCreateInput("Hostname", 120, 362, 113, 24)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    ;+++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++
    $Button2 = GUICtrlCreateButton("Beenden", 24, 576, 113, 25, 0)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;+++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button2
    Exit
    Case $Starten
    _perneuern()
    EndSwitch
    WEnd
    Func _perneuern()

    $Profilserver = GUICtrlRead($Profilserver) ; Rückgabe des Zustandes des Menüpunktes
    $Benutzername = GUICtrlRead($Benutzername) ; Rückgabe des Zustandes des Menüpunktes
    $Hostname = GUICtrlRead($Hostname) ; Rückgabe des Zustandes des Menüpunktes

    $quelle = "\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil\*"
    $ziel = "\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sic"
    If Not FileExists($quelle) Then
    MsgBox(0,$Profilserver, "Benutzer oder Server nicht bekannt!",5)
    Exit
    Else
    If Not FileExists($ziel) Then
    MsgBox(0,$Profilserver, "Ordner Profil.sic wird jetzt erstellt ...",3)
    DirCreate ($ziel)

    sleep(1000)

    MsgBox(0,$Profilserver, "Ordner wurde erfolgreich erstellt, der Kopiervorgang beginnt in wenigen Sekunden.",5)

    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$Profilserver & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    Else
    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$Profilserver & " -- erfolgreich" & @CRLF )

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    EndIf
    EndIf
    sleep(2000)
    $FileList_01 =_FileListToArray("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\", "*",1) ;listet Files
    $FileList_02 =_FileListToArray("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\", "*",2) ;listet Ordner
    For $x = 1 to $FileList_01[0]
    FileDelete("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\" & $FileList_01[$x])
    Next
    For $x = 1 to $FileList_02[0]
    DirRemove("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\" & $FileList_02[$x], 1)
    Next
    $sCommand00 = "del /F /S /Q /A \\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\ntuser.pol"
    _RunDOS ( $sCommand00 )
    sleep(2000)
    $anfrage = MsgBox(4,"","Möchtest du jetzt das Lokale Profil auf dem Client löschen?")

    If $anfrage = 6 Then
    $sCommand00 = "del /F /S /Q /A \\" & $Hostname & "\Dokumente und Einstellungen\" & $Benutzername
    ;$sCommand01 = "del /F /S /Q /A \\" & $Hostname & "\Dokumente und Einstellungen\vigross"
    _RunDOS ( $sCommand01 )
    MsgBox(0,"","Profil gelöscht.")
    Else
    MsgBox(0,"","Lokales Profil auf dem Host " & $Hostname & "wurde nicht gelöscht.")
    EndIf
    ;öffnet log
    ShellExecute("info.log", "", @ScriptDir)
    Exit
    EndFunc
    Func _copy($fromFile, $tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 256
    $winShell = ObjCreate("shell.application")
    $winShell.namespace ($tofile).CopyHere ($fromFile, $FOF_RESPOND_YES)
    If @error Then
    MsgBox(0, "", "the previous line got an error.")
    EndIf
    EndFunc ;==>copy

    [/autoit]

    Vielen Dank nochmal für eure Hilfe.

    Edit Oscar: Spoiler gesetzt.

    Einmal editiert, zuletzt von Oscar (30. November 2010 um 10:37)

  • lass dir aml in der jeweiligen for next schleife mit einer msgbox das$FileList_01[$x] bzw $FileList_02[$x] ausgeben!
    könnte sein, dass da eine info kommt ...
    lass dir auch mal die sachen mit einem arraydisplay anzeigen ... vlt gibts da schon ein problem ...

    gruß gmmg

    Einmal editiert, zuletzt von gmmg (29. November 2010 um 14:01)

  • Also das array läuft eigentlich durch, also bis Zeile 111 kommt er, denn er löscht alle Dateien und Ordner inkl. der ntuser.pol und wartet dann auch 2 Sekunden, dann kommt plötzlich der Fehler.

  • Das Problem besteht wenn der Ordner "Profil.sicher" leer ist. Ich habe versucht eine Abfrage einzubauen, allerdings bekomme ich immer noch den Fehler:

    Wenn ich z.Bsp.:

    [autoit]

    If NOT FileExists("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\ntuser.pol") Then
    MsgBox(4096,"Verzeichnis ist leer!")

    [/autoit]

    Kommt die Meldung:
    Error: Incorrect number of parameters in funktion call

    Wenn ich das so mache:

    [autoit]

    If NOT FileExists("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\*") Then
    MsgBox(4096,"Verzeichnis ist leer!")

    [/autoit]

    Kommt die Array Meldung wie vorher schon beschrieben.
    Dein Tipp vom Beitrag zuvor hat leider nicht geholfen :(

    Hier nochmal das Script was ich verwende:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #Include <Array.au3>
    #include <Process.au3>
    #Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\micholys\desktop\profil_neu.kxf
    $Form1_1 = GUICreate("BTC ServiceDesk Tool v0.1", 588, 620, 563, 122)
    $Group1 = GUICtrlCreateGroup(" Info ", 8, 16, 569, 593)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Mit diesem Tool hast du die Möglichkeit durch wenige Klicks schneller und", 32, 48, 519, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $Label3 = GUICtrlCreateLabel("einfacher bestimmte Aktionen durchzuführen.", 32, 72, 326, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $Profilerneuerung = GUICtrlCreateGroup("Profilerneuerung", 16, 104, 553, 161)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("Für eine Profilerneuerung müssen der Server, der Benutzername und der Hostname", 26, 128, 497, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Benutzername = GUICtrlCreateInput("Benutzername", 232, 176, 113, 24)
    $Hostname = GUICtrlCreateInput("Hostname", 378, 176, 113, 24)
    $Profilserver = GUICtrlCreateInput("Profilserver", 85, 176, 113, 24)
    $Label1 = GUICtrlCreateLabel("eingetragen werden.", 27, 144, 126, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Starten = GUICtrlCreateButton("Starten", 200, 224, 177, 25, 0)
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++++++++++++++++++
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Aufraumen = GUICtrlCreateGroup("Rechner aufräumen", 16, 416, 553, 113)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Label5 = GUICtrlCreateLabel("Hiermit kannst du den Rechner des Anwenders aufräumen, damit er wieder mehr Platz auf", 24, 440, 531, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label6 = GUICtrlCreateLabel("seinem Rechner zu verfügung hat.", 24, 456, 204, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Hostnam = GUICtrlCreateInput("Hostname", 120, 488, 113, 24)
    $Starte = GUICtrlCreateButton("Starten", 352, 488, 113, 25, 0)
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++ Ende GUI +++++++++++++++++++++++++++++++++++++++++++++++
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label7 = GUICtrlCreateLabel("Copyright by Micha Steinke", 432, 584, 133, 17)
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++ Ende GUI ++++++++++++++++++++++++++++++++++++++++++++++++
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    $Group2 = GUICtrlCreateGroup("Lokales Profil", 16, 280, 553, 121)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Label8 = GUICtrlCreateLabel("Hier kannst du das Lokale Profil auf dem Rechner löschen, denke aber daran das der", 24, 304, 509, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Label9 = GUICtrlCreateLabel("Benutzer abgemeldet sein muß !!!", 24, 320, 201, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $Button1 = GUICtrlCreateButton("Starten", 352, 362, 113, 25, 0)
    $Input1 = GUICtrlCreateInput("Hostname", 120, 362, 113, 24)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++ Ende GUI +++++++++++++++++++++++++++++++++++++++++++++++
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    $Button2 = GUICtrlCreateButton("Beenden", 24, 576, 113, 25, 0)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++ Ende GUI +++++++++++++++++++++++++++++++++++++++++++++++
    ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button2
    Exit
    Case $Starten
    _perneuern()
    EndSwitch
    WEnd
    Func _perneuern()

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

    $Profilserver = GUICtrlRead($Profilserver) ; Rückgabe des Zustandes des Menüpunktes
    $Benutzername = GUICtrlRead($Benutzername) ; Rückgabe des Zustandes des Menüpunktes
    $Hostname = GUICtrlRead($Hostname) ; Rückgabe des Zustandes des Menüpunktes

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

    $quelle = "\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil\*"
    $ziel = "\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sic"
    If Not FileExists($quelle) Then
    MsgBox(0,$Profilserver, "Benutzer oder Server nicht bekannt!",5)
    Exit
    Else
    If Not FileExists($ziel) Then
    MsgBox(0,$Profilserver, "Ordner Profil.sic wird jetzt erstellt ...",3)
    DirCreate ($ziel)

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

    sleep(1000)

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

    MsgBox(0,$Profilserver, "Ordner wurde erfolgreich erstellt, der Kopiervorgang beginnt in wenigen Sekunden.",5)

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

    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$Profilserver & " -- erfolgreich" & @CRLF )

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

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    Else
    _copy($quelle,$ziel)
    _FileWriteLog(@ScriptDir & "\info.log",$Profilserver & " -- erfolgreich" & @CRLF )

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

    MsgBox (0,"","Kopiervorgang ist abgeschlossen, in wenigen Sekunden werden die Dateien aus dem Profil Ordner gelöscht.",5)
    EndIf
    EndIf
    sleep(1000)
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;++++++++++++++++++++++++++++++++++++ Dateien aus dem Server Profil.sic Ordner löschen ++++++++++++++++++++++++++++++++
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    If NOT FileExists("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\ntuser.pol") Then
    MsgBox(4096,"Verzeichnis ist leer!")

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

    Else

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

    $FileList_01 =_FileListToArray("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\", "*",1) ;listet Files
    $FileList_02 =_FileListToArray("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\", "*",2) ;listet Ordner

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

    For $x = 1 to $FileList_01[0]
    FileDelete("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\" & $FileList_01[$x])
    Next
    For $x = 1 to $FileList_02[0]
    DirRemove("\\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\" & $FileList_02[$x], 1)
    Next

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

    $sCommand00 = "del /F /S /Q /A \\" & $Profilserver & "\config$\" & $Benutzername & "\Profil.sicher\ntuser.pol"
    _RunDOS ( $sCommand00 )

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

    EndIf

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

    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;++++++++++++++++++++++++++++++++++ Ende Dateien aus dem Server Profil.sic Ordner löschen +++++++++++++++++++++++++++++
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    sleep(1000)
    $anfrage = MsgBox(4,"","Möchtest du jetzt das Lokale Profil auf dem Client löschen?")
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;++++++++++++++++++++++++++++++++++++++ Dateien aus dem Host Profil.sic Ordner löschen ++++++++++++++++++++++++++++++++
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

    If $anfrage = 6 Then
    DirRemove("\\" & $Hostname & "\c$\Dokumente und Einstellungen\vigross", 1)
    MsgBox(0,"","Das Löschen beginnt jetzt...",2)
    MsgBox(0,"","Profil auf dem Host gelöscht.")
    Else
    MsgBox(0,"","Lokales Profil auf dem Host " & $Hostname & "wurde nicht gelöscht.")
    EndIf
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;+++++++++++++++++++++++++++++++++++ Ende Dateien aus dem Host Profil.sic Ordner löschen ++++++++++++++++++++++++++++++
    ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ;öffnet log
    ShellExecute("info.log", "", @ScriptDir)
    Exit
    EndFunc
    Func _copy($fromFile, $tofile)
    Local $FOF_RESPOND_YES = 16
    Local $FOF_SIMPLEPROGRESS = 256
    $winShell = ObjCreate("shell.application")
    $winShell.namespace ($tofile).CopyHere ($fromFile, $FOF_RESPOND_YES)
    If @error Then
    MsgBox(0, "", "the previous line got an error.")
    EndIf
    EndFunc ;==>copy

    [/autoit]


    Denke irgendwo ab Zeile 114 liegt der Fehler.
    Vielleicht hast du ja noch die eine oder andere Idee :)

    Edit Oscar: Spoiler gesetzt.

    Einmal editiert, zuletzt von Oscar (30. November 2010 um 10:34)

  • Hallo,

    woher kommt denn der Ordner Profil.sicher? Oben kopierst Du den Inhalt von Profil nach Profil.Sic. Soweit so gut, warum soll jetzt im Ordner Profil.sicher etwas gelöscht werden?

    P.S.: Längere Skripte sind in Spoilern (Klick auf das Kästchen mit der Aufschrift SP) besser aufgehoben. Das hält den Thread übersichtlicher.

  • Hi, ja ok, werde ich mir merken.

    Der Ordner Profil.sicher ist von mir nur zum testen angelegt worden, da ich nicht den richtigen Profil Ordner löschen möchte solange das Scrippt nicht richtig funktioniert.
    In den Ordner kopiere ich manuell erstmal die Dateien rein um die testweise zu löschen.

  • hallo,

    in meinem beispielskript war doch glaube ich, die fehlerabfrage aus der hilfe drin!

    [autoit]


    $FileList=_FileListToArray(@DesktopDir)
    If @Error=1 Then
    MsgBox (0,"","No Folders Found.")
    Exit
    EndIf
    If @Error=4 Then
    MsgBox (0,"","No Files Found.")
    Exit
    EndIf
    _ArrayDisplay($FileList,"$FileList")

    [/autoit]

    müsstest hier "If @Error=4 Then" einen else zweig einbauen ...

    gruß gmmg