Beiträge von Racer

    Hallo!


    Ich bin auf der Suche nach einer Möglichkeit Grouppolicyobject (GPOs) mit Autoit zu "bearbeiten" - Auslesen wäre eh schon ein Hit.

    Bis jetzt jetz habe ich nur im engl. Forum ein Script gefunden das wiederum auf die Powershell zugreift. Schön wäre es wenn man die Scripts native machen könnte....


    Von Water die AD-Tools sind ein Hammer und ich verwende sie sehr gerne (meinen höchsten Respekt an water), aber leider kann ich damit keine GPOs bearbeiten. GPPs wäre mein Ziel - oder eher ein Wunschtraum....


    Vielleicht hat hier schon einmal wer damit zu tun gehabt oder eine Idee...bin für alles sehr dankbar


    lg

    Racer

    Da ich auch öfter mit INI-Dateien arbeite habe ich zwei Verschiende Verwendungszwecke:


    1.) klassisch: Im INI-File stehen Daten wir Pfade, Werte oder Einstellungen für ein Programm. Das Programm verwendet jemand anders und kann den Sourcecode nicht einsehen. Damit aber z.B.: Serverdienste deinen ein AutoIT Programm verwendet wird angepasst werden kann, lege ich eine INI-Datei an.


    2.) Für eine Berechnung von Buchhaltungsdaten habe ich ein INI-File missbraucht um Umsätze in Einnahmen und Ausgaben und das pro Monat aufzuteilen. Es war halt zu verlockend die Section zu als Ablage zu verwenden um später den Output (PDF) leichter zu generieren.


    Ich sehe den Vorteil von INIs das es viele Programmier- oder Scriptsprachen leicht lesen können. Für ein Projekt wo ich in AutoIT schreibe, der Kollege in Powershell und der Dritte seine VB-Scripts anpasst sind die INIs von ganz großer Bedeutung: Ich schreibe Werte rein, das nächste Tool liest es aus....gibt sicher 1000 andere Möglichkeiten, aber das war am einfachsten.


    Aber ich bin auch schon an die Grenzen von INI-Files gestossen: Ich wollte einige tausend Einträge machen (+-18000) und das hat nicht mehr funktioniert!

    Mit Json stehe ich ganz besonders auf Kriegsfuß und XML ist auch nicht meines....da schreibe ich lieber im Binärcode in die Registry ;)


    lg

    Racer

    Code
    Func Password()
     global $pass....
     Return

    Geht ja gar nicht....In den Funktionen immer lokale Variablen definieren!


    Zu Deinen Errorlevel: Es gibt laut Doku STDERR-Stream den man abfragen kann...das habe ich selbst zwar noch nie benutzt aber ich bin sicher das es funktioniert.

    Oder Du leitest den Output vom CMD in eine Datei um: Beispiel "dir /s >%temp% 2&1" (die Anführungszeichen dürfen nicht sein, ist nur für die besser zu erkennen.


    Ich bin mir auch nicht sicher ob der Returnwert vom RUN dem Errorlevel des externen Programme entspricht. Meiner Meinung nach ist das RUN hier nicht die beste Wahl, eher ein Runwait, das Script soll ja warten bis das Zertifikat installiert ist, danach den Errorlevel certutil auswerten und dann weitere Aktionen setzten....


    lg

    Harald

    Hallo!


    Trifft nicht ganz das Thema, aber Micha_he hat mir mal sehr geholfen ein Icon zu verstecken. Vielleicht kannst Du das Script brauchen und für Deine Zwecke anpassen. Mein Wissen reicht leider dafür nicht aus :(


    lg

    Racer


    $ret = DriveMapAdd ("k:" , "\\xy.dummy.ch\" & @UserName)


    Du musst den String für den Pfad mit einem & verbinden "\\xy.dummy.ch\" & @UserName)


    Wenn Du jetzt ein Hiddenshare verbindest muss dann noch das $ hinzugefügt werden:

    $ret = DriveMapAdd ("k:" , "\\xy.dummy.ch\" & @UserName & "$")

    Hier als Beispiel ohne Buchstabe:


    DriveMapAdd ("", "\\IP oder FQDN oder NB_Name\Freigabe", 0, "Server\user", "password")


    oder mit Buchstabe


    DriveMapAdd ("K", "\\IP oder FQDN oder NB_Name\Freigabe", 0, "Server\" & @UserName, "password")


    seht sehr ausführlich im der erstklassigen deutschen Hilfe.


    lg

    Racer


    PS: Aus AutoIt funktioniert das sogar wenn man als System arbeitet (psexec -sid cmd), geht aus einem Batchjob nicht da es vom System her unterbunden wird!

    Ist das so?
    Wir haben bisher nur ein paar Codeschnipsel gesehen und keiner von uns kann das beschriebene daher reproduzieren.
    Es ist eher wahrscheinlich, dass der Fehler ganz anders gelagert war. Evtl hatte er nen Schreibfehler alla $testt drin oder so, den er dann mit ausgebügelt hat ohne es zu merken etc.


    Kurz: Ich sehe noch nicht, dass dies wirklich zusammenhängt. Dafür bräuchte man ein reproduzierbares Minimalskript.


    wie ich schon am Anfang geschieben habe ist das Programm außerhalb meines Unternehmens nicht lauffähig. In Post #5 habe ich den Teil herauskopiert (copy & paste) und da sieht man ganz deutlich das ich mich nicht verschrieben habe - da wäre ja zu einfach und damit hätte ich Euch sicher nicht beslässtig.


    Ich habe später auch noch versucht den Fehler zu Hause (andere Client) nachzustellen - kommt einfach nicht mehr!


    Was mich sehr unwuchtig macht ist das beim Start F5 alles ohne Probleme funktioniert hat und wenn ich es kompiliere und dann als EXE starte der oben genannte Fehler gekommen ist.

    Das was ich leider jetzt nicht mehr nachvollziehen kann: Könnte sich im Editor ein nicht-sichtbares Zeiten eingeschlichen haben (z.B.: Shift + Space) den der Interpreter ignoriert, aber nach dem kompilieren dann als zusätzliches Zeichen bei der Variable wahrgenommen wird?


    Das wird wohl ein Fall für Aktenzeichen XY - ungelöst werden (Gott sei Dank ohne Gewalt)


    lg

    Racer

    Ich hatte für SciTE noch eine weitere Debug-Möglichkeiten geschaffen:


    Vielleicht hilft dir das.

    Ich bin sicher das ich irgendwann wieder anstehe und bin für jede Hilfe sehr dankbar!


    lg

    Racer

    Racer darf ich dich dazu noch kurz fragen, wen du hier mit "Du" meinst?

    Hallo!


    Ich habe mich auf Deinen Hinweis "Nachtrag 2: Ich würde zudem immer If $test then anstatt If $test = True then bzw. If not $test then anstatt If $test = False then bevorzugen." bezogen.


    Eigentlich sollte es keinen Unterschied machen ob ich "if $test then" oder "if $test = True Then" schreibe, außer das es kürzer ist! Aber wenn was nicht geht und man sich schon die Haare rauft probiert man alles was es gibt - könnte ja doch was dran sein und ja, da beginnt man wieder an den Weihnachstsmann zu glauben, hauptsache es funktioniert :party:


    lg

    Racer

    Ist vielleicht nicht AutoIT like, aber dafür Sauschnell:


    dir /s /b | findstr /i "qwertzui" > %temp%\suche.txt


    ...schon in einem RunWait und das flutscht ;)


    Danach das File einlesen!


    lg

    Racer

    Hallo!


    Ja, jetzt habe ich ein neues Problem: Das Problem ist nicht mehr da....


    Ich habe nur die Änderung wie Du sie beschrieben hast durchgeführt und auch den Gegentest und jetzt geht es immer.


    Bitte haltet mich nicht für verrückt, aber was der Unterschied zu gestern ist kann ich nicht sagen (außer das heute der 17.1 ist)


    Trotzdem habe ich was gelernt das mir sehr geholfen hat:

    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7
    #AutoIt3Wrapper_Run_Au3Stripper=y

    #Au3Stripper_Parameters=/sf /sv /mo /rm /rsln


    sehr wichtig!


    lg

    Racer

    Hallo!


    Ja das ist ja mein Problem: Mit F5 läuft alles ohne Probleme, auch alle Variablen sind deklariert, es gibt auch keine Meldung in der Konsole im SciTe das etwas fehlen sollte.


    Den Quellcode kann ich schon posten - ist ja kein Staatsgeheimnis, aber es wird nicht laufen da das Umfeld nicht verfügbar ist (Firmeninterner DNS-Server mit WAPI, Fileserver mit den Daten,....). Ich kann das auch nicht so umstellen das extern funktioniert da es sich um einen Monitorprogramm handelt das eine Serverfarm überwacht.


    Diverse Pfade und HTTPS-Adressen muss ich aus datenschutzrechtlichen Gründen entfernen...


    lg
    Racer

    Hallo!


    Neues von der Errorfront: Nachdem ich alle Meldungen weggebracht habe kommt der Fehler immer noch ;(


    Ich bin jetzt etwas anders vorgegangen um den Fehler mal einzugrenzen: Da ja die GUI angezeigt wird und erst danach die Fehlermeldung kommt, habe ich an an verschiedenen Stellen im Script ein "exit" eingebaut um zu sehen wie weit es läuft. Auch das hat mich nicht wirklich weiter gebracht.


    Durch Zufall oder eher aus Verzweiflung habe ich dann meine Hilfsvariable "$test" auf True gesetzt und das Programm für die Konsolenausgabe kompiliert. Sie da es funktioniert...


    Das steht am Anfang meiner Scripts:


    ;***************************

    Global $test = ""

    Global $timer_on

    Global $pfad = "\Server\Freigabe$\" ;Hauptpfad

    if @Compiled = 1 Then ;Produktion


    AutoItSetOption("TrayAutoPause", 1) ;Keine Pause im Trayicon

    AutoItSetOption("TrayIconHide",1) ;Kein Trayicon

    $test = false

    Else ;Entwicklung

    $test = True

    $timer_on = False ;Timer für einlesen ein/aus

    EndIf

    ;***************************


    Damit unterscheide ich ob ich noch im Scriptmodus bin oder das Programm kompiliert ist und für die Verwendung freigeben (EXE)


    Im Script mache ich oft eine Konsolenausgabe um zu sehen ob die Variablen richtig gesetzt sind, oder Return-Wert korrekt ist....einfach für die Entwicklung


    Beispiel:


    if $ret <> 1 Then ;Kann nicht geöffnet werden

    $_auto_fqdn_timer = 5000

    $fqdn_write = False

    if $test = True Then

    Print ("FQDN-File darf nur gelesen werden")

    print ("$_auto_fqdn_timer: " & $_auto_fqdn_timer)

    EndIf


    Else

    $fqdn_write = True ;Es darf geschrieben werden

    $_auto_fqdn_timer = 1000 ;Timer wird für writer auf 1 Sekunde gestellt

    if $test = True Then

    Print ("FQDN-File geschrieben werden")

    print ("$_auto_fqdn_timer: " & $_auto_fqdn_timer)

    EndIf

    EndIf



    Setzte ich bei @Compiled die Variabel $test = false bekomme ich den Fehler, lasse ich es auf True funktioniert es. Ich habe alles Funktionen und if / Then mit $test kontrolliert ob da nicht was fehlt ....nichts gefunden


    Momentan bin ich froh das ich das Programm fertigstellen kann, aber eine Erklärung dafür habe ich nicht!


    lg

    Racer

    Hallo!


    Heute ist Freitag der 13te und der hat es in sich:

    Ich habe mein Programm weitergeschrieben das auch im Interpretermodus so läuft wie es soll. Nach Abschluss habe ich es compiliert und signiert und wenn ich es Aufrufe kommt sogar noch meine GUI und dann die Meldung: "Line 15976 (File 'd:\...\msvpn_monitor.exe'): Error: used without being declared - nach dem compilieren


    Um den Fehler leichter zu finden (dachte ich halt) habe ich in mein Script AutoItSetOption ("MustDeclareVars", 1) eingefügt und alle vergessenen Variablen sorgfälltig deklariert. Mit F5 gibt es keine Probleme, keine Fehlermeldungen in der SciTE-Console - alles Bestens.


    Aber wenn ich es wieder kompiliere kommt der Fehler. Habe ich eine Chance anhand der Line-Number das zu orten? Oder gibt es noch andere Möglichkeiten den Fehler zu finden?

    Werden alle Funktionen (auch die mit Include) "MustDeclareVars" auch gecheckt?


    Wenn ich das Script poste ist es nicht Lauffähig, da die Umgebung (Netzwerkshares und vor allem DNS) nicht verfügbar ist. Macht die Sache jetzt nicht einfacher!


    Bin für jeden Tipp dankbar


    lg

    Racer

    Freut mich die Helfen zu können.


    Es gibt noch eine nette kleine Handhabung: Sind mehrer Freigaben am gleichen Server, z.B.: Im HomeNAS, dann reicht im Explorer (oder Desktop) der Shortcut auf den Server: \\Server

    Die Freigaben die nicht versteckt sind werden dann gelistet:



    Es gibt aber Programme die können damit nicht umgehen - das muss man halt vorher austesten...


    lg

    Racer