Laufwerke verbinden - Fenster friert bei Fehler ein.

  • Hallo,

    Ich arbeite an einem Tool, mit dem man ganz einfach ein Laufwerk verbinden kann. Das Tool authenfifiziert sich über das Windows integrierte Authentifizierungs-Fenster.

    Das Tool ist sogut wie fertig. Es funktioniert auch alles, solange kein Fehler auftaucht. Genau gesagt:

    • wenn ein Pfad aus igendeinem Grund nicht erreichbar ist
    • Laufwerksbuchstabe nicht getrennt werden kann, da er schon belegt ist, oder wenn etwa gerade "bussy" ist.

    Es wäre super, wenn er bei einem Event $drvCallError diesen rausschreibt und abbricht. Bei einem Fehler friert das Fenster momentan einfach ein.

    Danke für die Hilfe!


  • Dim Const $drvCallError = @error

    Ich weiß nicht was diese Zeile bringen soll, aber sie ist absolut unnütz.

    Du musst wissen, das @error (wenn es überhaupt gesetzt wird), immer nach einer Funktion direkt abgefragt werden muss.
    @error wird nämlich beim Auruf JEDER neuen Funktion direkt überschrieben und der Wert ist somit ungültig. Die Variable als Konstante zu deklarieren ist obendrein noch ein weiterer Fehler.

    Also merke: Wenn du mit @error arbeiten willst, speichere den Wert nach der Ausführung der Funktion,
    die @error schmeißt (Achtung beim Funktionen verketten), in eine Variable um den Fehler im Nachhinein zu bearbeiten.

    Außerdem stehen in @error Zahlen drinne also solltest du den Vergleich mit "1" oder "2" lassen, da das nach hinten losgehen kann.

  • Danke für die Antwort. Wenn ich das richtig verstehe wird zuerst die Funktion (fertig) ausgeführt, und erst danach kann ich das @error abfragen.

    Ich habe mir bereits überlegt, vor der Funktion mit den Laufwerken bestimmte Prüfungen einzubauen.

    • Ist der Pfad bereits vorhanden = Laufwerk schon eingebunden
    • Ist der Laufwerksbuchstabe schon belegt, wird es verwendet?
    • Kann der Servername - DNS aufgelöst werden.
    • Ist der Authentifizierungsserver erreichbar?

    Die kompletten Errorcodes könnte ich dann ja rausnehmen, weil ich die Fehler im Vorfeld schon ausschließe. Zudem könnte ich die Schleife irgendwie so begrenzen. Ich möchte keine Fenster haben die einfrieren.

    Code
    DO
    Until DriveStatus($aServers[$i][2]) = "READY" OR $i=10

    Würde das einer Lösung näher bringen?

  • Danke für die Antwort. Ich werde das Script umbauen und ein Feedback geben.
    Das Fenster friert ein, wenn er die Funktion nicht bis zum Ende durchlaufen kann, da er auf "READY" vom Laufwerk wartet. Wie zum Beispiel jetzt mit dem \\server1\freigabe - Server klarerweise nicht vorhanden.

  • Es funktioniert!

    Anbei der neue Code: