1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Racer

Beiträge von Racer

  • Datei von Netzlaufwerk kopieren mit Progressbar

    • Racer
    • 19. April 2024 um 09:03

    Progessbar mit Robocopy

    Wie so viele vor mir, habe auch ich das Rad neu erfunden und eine Progressbar für den Kopiervorgang "erfunden"....

    In meinen Fall seht ein Robocopy dahinter (ist ja inzwischen Standard unter Windows):
    Die Funktion ist nur C&P und muss auf die jeweiligen Bedürfnisse angepasst werden!

    Code
    ;*************************************************************
    ; Image mit Robocopy kopieren
    ; Übergabe: Dateiname mit Pfad vom lokalen Image
    ; Übergabe: Dateiname mit Pfad von ZielImage
    ; Übergabe: Flag ob es sich um ein USB-Device handelt
    ; Rückgabe: ProzessID
    ; Rückgabe: -1 nicht genügend Platz auf Ziellaufwerk
    ; Rückgabe: -2 Zielsystem ist nicht NTFS formatiert
    ;*************************************************************
    func rcopy ($lokalimage, $zielimage, $usb)
    
    ;local: i:\images\pc30199.wim
    ;ziel: w:\pc30199.wim
    
    local $von_pfad						;Nur den Pfad woher kopiert wird
    local $nach_pfad					;Nur den Pfad wohin kopiert wird
    local $von_name						;Dateiname der zu kopierenden Datei
    local $nach_name					;Endname der Datei (muss umbenannt werden - geht nicht anders bei Robocopy)
    local $tmp, $ret					;Hilfsvariablen
    
    Local $imagesize					;Wie groß ist das Image
    local $freespace					;Wieviel Platz ist am Ziellaufwerk
    local $only_ntfs					;Ist das Zieldateisystem NTFS
    local $pid							;ProzessID des Robocopy
    
    
    $ret = StringInStr ($lokalimage, "\", 2, -1)	;Das erste "\" von Rechts
    $von_pfad = StringLeft ($lokalimage, $ret -1)
    $von_name = Stringmid ($lokalimage, $ret +1)
    
    $ret = StringInStr ($zielimage, "\", 2, -1)
    $nach_pfad = StringLeft ($zielimage, $ret -1)
    $nach_name = Stringmid ($zielimage, $ret +1)
    
    
    $freespace = round (DriveSpaceFree (StringLeft ($zielimage, StringInStr ($zielimage, "\", 2, 1))))
    $imagesize = round (FileGetSize ($lokalimage) / 1048576)
    if $test = True Then
    	print ("Freer Speicher: " & $freespace & " MB")
    	print ("Imagegröße: " & $imagesize & " MB")
    	print ("Zieldateisystem: " & DriveGetFileSystem (gettok ($nach_pfad, "\" , 1)))
    EndIf
    
    if DriveGetFileSystem (gettok ($nach_pfad, "\" , 1)) <> "NTFS" and $usb = True Then				;NTFS formatiert ?
    	Return -2
    EndIf
    
    
    if $freespace < $imagesize Then													;Genügend Platz auf dem Zielsystem?
    	Return -1
    EndIf
    
    
    local $parameter = $von_pfad & ' ' & $nach_pfad & ' "'  & $von_name & '"'
    If $test = true Then
    	print ("Parameter an Robocopy: " & @TAB & $parameter)
    EndIf
    
    
    $pid = run(@ComSpec & " /c robocopy  /NDL /NJH /NJS /NS /NC /w:5 /r:5 " & $parameter , "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    
    Return $pid
    
    
    EndFunc
    ;*************************************************************
    Alles anzeigen


    Im Hauptprogramm wird jetzt die PID "überwacht" und der Output Dos Fenster ausgelesen, in eine Zahl umgewandelt und mittels Progressbar dargestellt.

    Robocopy gibt im Grunde nur mehr den Prozent-Fortschritt aus....und der geht immer von 0% bis 100% ...
    Noch ein Vorteil ist dass es als Prozess läuft und damit das eigentliche AutoIT-Programm nicht "warten" muss...

    Der Code ist schon etwas älter und naja, nicht so gut dokumentiert, dieht also eher als Idee als copy & paste Lösung.

    lg
    Racer

  • active directory - Bezug zwischen IP, hostname, User herstellen

    • Racer
    • 17. April 2024 um 12:09

    Eine Idee hätte ich noch: Du kannst einen Task erstellen mit der Bedingung "beim Anmelden" bzw. "beim Abmelden" ausführen.

    %computername% %username% und IP sollte sich leicht ermitteln lassen im Usermode.

    Ich habe für eine so ähnlichen Zweck mal eine Client und Server Programm geschriebe das via TCP/IP die Daten schickt und der Server schreibt dann alles in ein einfache Logfile (Datum, Uhrzeit: Daten,....)


    lg

    Racer

  • active directory - Bezug zwischen IP, hostname, User herstellen

    • Racer
    • 12. April 2024 um 08:56

    Hallo!

    Es gibt keinen direkten Bezug zwischen Computer und den Benutzer im AD. Beides sind einfach Objekte feinfacht ausgedrück die dort liegen. Der Computer meldet sich "unsichtbar" an, der User im normalfall interaktiv...

    Was geht, aber nicht so einfach ist: Im Eventlog vom DC steht wann sich wer wo angemeldet hat. Das zu analysieren ist aber eine echte Herausforderung, insbesonders wenn man das die Events vernünftig (Sicherheitsbasierend) einschaltet. Das hängt natürlich auch von der große des Netzes ab: habe ich 20 Clients, 5 Server und 2 DCs wird das kein Problem sein.

    Ich habe ca. 60.000 Clients in 7 Domänen und 2 Forrests mit einigen 1000 Server. Da kommen 1500 Request pro Sekunde herein.....das ist dann nicht mehr so einfach Abzufragen weil es einfach zu lange dauert (Ausgenommen es gibt einen Sicherheitsverstoß und es müssen die Daten wieder ausgewertet werden).

    Aber möglicherweise hilft dir ein andere Ansatz: Du hast einen Clientprogramm das bei Anmeldung des Benutzer läuft (Task) und der meldet die Information an einen Server (Datum, Uhrzeit, Hostname, IP, Username,....)
    Damit reduzierst Du die Datenmenge und hast ein schönes Logfile.

    lg
    Racer

  • Frankiermaschine

    • Racer
    • 2. April 2024 um 07:19

    wäre es nicht besser von Brief auf Email umzusteigen? Ich habe gehört da gibt es schon so eine elektische Post 8o

    In Ö gibt es ein Services von der Post das der Absender eine Email senden kann und der Empfänger bekommt es ausgedruckt übergeben. Natürlich immer unter den wachsamen Auge des Datenschutzes....

    lg
    Racer

  • Umlaute in Dateien aus DOS-Befehlen

    • Racer
    • 20. März 2024 um 14:09
    Zitat von HansJ54

    Was wäre "ACLs auf NTFS"?

    Datei und Ordnerrechte.
    Da die Daten auf einen Share liegen und ich vermute mal die Verwaltung über ein Active Direktory läuft kann man nicht nur Shares freigeben, sondern auch Dateirechte auf Dateien/Ordner setzten.

    wildes Beispiel: Der Benuzter darf eine Datei schreiben und lesen, aber nicht erzeugen und nicht sehen - gebe zu, macht nicht so viel Sinn, ist aber technisch möglich.

    Beispielbild was man so alles einstellen kann (ist nicht das oben beschriebene)

    image.png

    Man müsste sich das genau ansehen und das genau Umfeld dazu, aber darüber Nachzudenken und ein bisschen zu testen könnte in Zukunft viel arbeit sparen.
    lg
    Racer

  • Umlaute in Dateien aus DOS-Befehlen

    • Racer
    • 20. März 2024 um 10:19
    Zitat von HansJ54

    Also Aufgaben für meine nächste Nachtschicht:

    gibt es im Nummernordner kunden# Ordner mit ..._1234 die in einer tieferen Ebene sind (kann sein, muss aber nicht)
    gibt es im Junction-Ordner kunden "echte" Ordner, die unterhalb der Junctions sind - aber nicht da, wohin die Junction verweist sondern direkt in diesem Ordner. Kann es doch eigentlich nicht geben.

    Ich würde mir überlegen ob die Benutzer nicht technisch einzuschränken sind, so das sie keine Ordner mehr in der Zukunft verschieben können.
    ACLs auf NTFS ist zwar nicht jedermann Sache, aber mit ein bisschen tüfteln geht das sicher. Das spart Dir eine Menge arbeit - ich weiß wovon ich rede, habe auch solche Wappl..ähh...Kunden ;)

    lg

    Racer

  • Liste von allen Junctions in Verzeichnis und Unterverzeichnis auflisten

    • Racer
    • 25. Februar 2024 um 19:08

    Es gibt das Tool junction.exe (sysinternls bzw. MS). Damit kannst Du recursiv die Disk nach junctions durchsuchen lassen.

    lg

    Racer

  • Data Collection-Variables / Maps in AutoIt - Status?

    • Racer
    • 19. Februar 2024 um 19:40

    Hallo

    Jetzt lese ich mir den Beitrag schon zwei mal durch, sehe mir die Beispiele an und stehe immer noch auf dem Schlauch. Da ich aber immer durch die Beiträge hier viel lernen kann hatte ich mich gefragt ob das so was ich selbst vor einiger Zeit zusammen geschieben habe:

    AutoIt
    #include <Array.au3>
    dim $kunden[3]
    for $i = 0 to 2
        $kunden[$i] = ObjCreate ( "Scripting.Dictionary" )
    Next
    
    $nachname = "Nachname"
    $vorname = "Vorname"
    $alter = "Alter"
    $Ort = "Ort"
    $kunden[0]($nachname) = "Meier"
    $kunden[1]($nachname) = "Huber"
    $kunden[2]($nachname) = "Schmidt"
    
    $kunden[0]($vorname) = "Karl"
    $kunden[1]($vorname) = "Max"
    $kunden[2]($vorname) = "Susi"
    $kunden[0]($alter) = "21"
    $kunden[1]($alter) = "33"
    $kunden[2]($alter) = "51"
    $kunden[0]($Ort) = "Linz"
    $kunden[1]($Ort) = "Graz"
    $kunden[2]($Ort) = "Wien"
    
    $SearchItem = $alter
    ConsoleWrite ("-------------" & @CRLF)
    ConsoleWrite ("suche nach " & $alter & @CRLF)
    ConsoleWrite ("-------------" & @CRLF)
    For $i = 0 To 2
      ConsoleWrite ($kunden[$i].item($SearchItem) & @CRLF)
    Next
    ConsoleWrite (@CRLF)
    $SearchItem = $nachname
    ConsoleWrite ("-------------" & @CRLF)
    ConsoleWrite ("suche nach " & $nachname & @CRLF)
    ConsoleWrite ("-------------" & @CRLF)
    For $i = 0 To 2
      ConsoleWrite ($kunden[$i].item($SearchItem) & @CRLF)
    Next
    Alles anzeigen

    oder bin ich da völlig falsch unterwegs?

    lg

    Racer

    PS: Sorry das ich da so in den Betrag reinplatze

  • run mit start und Anfführungszeichen

    • Racer
    • 14. Februar 2024 um 10:11
    Zitat von BugFix

    Kann auch eine Fehlerinnerung sein, aber ich meine auch diesen Begriff in meinem Schreibmaschinenkurs (vor 45 Jahren) gehört zu haben. ;)

    echt? 45 Jahre? ....da können wir bald ein Rollator-Rennen machen ^^

    Also bei mir in Österreich/Wien kennt man den Begriff Leerschritt schon....ich muss ja manchmal auch den Chefs meines Chefs was erklären oder präsentieren....da muss man immer sehr einfache (kindertaugliche) Begriffe verwenden sonst verstehen die Folienkritzler nur Bahnhof:)

    lg

    Racer

  • run mit start und Anfführungszeichen

    • Racer
    • 14. Februar 2024 um 07:49

    Vielen Dank für Eure Mühe und Aufwand.

    Wahrscheinlich habe ich bis jetzt immer nur Programme ohne Leerschritt im Pfad/Dateiname gehabt. Da bildet man sich bald was ein das es immer so ist - oder es liegt am Alter das man schon was verwechselt?:Face:

    Aber schön zu sehen das hier noch wer ein Windows NT3.51 hat....

    lg
    Racer

  • run mit start und Anfführungszeichen

    • Racer
    • 13. Februar 2024 um 21:51

    Hallo AJ

    Zuerst zu Deiner Frage: Notepad++ war nur als Bespiel gedacht. Eigentlich war das eine Funktion im AutoIt _selfupdate. Damit kann das Programm überprüfen ob eine neue Version vorhanden ist, startet dann eine Kommandozeile (Batchjob geht nicht, da wir Applocker im Einsatz haben und ein Benutzer das nicht ausführen darf) mit "kurz warten" , "copy programm", "starte Programm".Dazu muss ich aber einen neuen Prozess generieren, keinen Subprozess und daher verwende ich eben start. Das AutoIt-Programm beendet sich (exit) solange das "ping" läuft.

    Da das Programm auf dem Desktop kommt und es aber verschiede Pfade gibt (c:\users\username\desktop, c:\users\username\one - drive\desktop, redirektet am Terminalserver) muss ich sicherstellen das bei einem Leerzeichen im Pfad das auch funktioniert. Daher setzt ich den Pfad inkl. Programmnamen unter Anführungszeichen.

    Das mit dem "Titel" hat mich zum Nachdenken und Experimentieren gebracht: Es scheint wirklich so das der erste Parameter der unter Anführungszeichen kommt als "Titel" interpretiert wird. Ich bilde mir ein das war bis vor kurzen nicht so.

    Verwende ich "start.exe "Titel" "c:\program files\notepad++\notepad++.exe" funktioniert es wieder. Das Gute daran: der "Titel" ist dem Windowsprogramm egal.
    Das Eigenartige ist nur: gebe ich den Pfad ohne Anführungszeichen an (bei Pfaden ohne Leerschritt) funktioniert das ohne Probleme.

    Ich werde künftig auf Nummer sicher gehen und immer einen Titel angeben!

    lg
    Racer

  • run mit start und Anfführungszeichen

    • Racer
    • 13. Februar 2024 um 14:45

    Hallo!

    Zuerst einmal: Es ist kein Problem im herkömmlichen Sinn, eher ein "Aha" da hat sich möglichweise was verändert....

    Um was geht es: Mein letztes kleine Script hat einen run-Befehl der auf den einen oder andern Rechner nicht ausgeführt wurde. Nachdem ich den Fehler (kein Syntax-Fehler) eingegrenzt habe bin ich auf etwas sehr eigenartiges gestoßen: habe ich den absoluten Pfad mit der Programmdatei unter Anführungszeichen wird das Programm nicht gestartet!

    Beispiel:

    $start = '"c:\Program Files\Notepad++\notepad++.exe"'

    run ('cmd /c ping 127.0.0.1 /n 2 & start ' & $start, "", @sw_hide)


    Das Verhalten kann ich auch auf der Commandline nachstellen, es geht nur ein Konsolen-Fenster auf - warum das auf einmal so ist kann ich nicht sagen.

    Ich habe mir jetzt beholfen statt dem start ein call zu verwenden, aber falls wer über so ein Problem fällt sollte unbedingt den Aufruf überprüfen!

    lg

    Racer

    PS: Fall das Thema hier nicht rein passt bitte verschieben

  • Gruppenmitgliedschaft ermitteln

    • Racer
    • 8. Februar 2024 um 08:09

    Vielen Dank Schnuffel!

    ja, gpresult /r wäre auch noch eine Alternative gewesen. Ich habe mich für den Dos-Output mit 'whoami /groups | findstr /i "meine Gruppe"' entschieden.
    Das ist immer noch am schnellsten, funktioniert offline (Gruppeninformationen werden ja gecacht) und in meinen Fall ist es mit findstr sehr gut vorzufiltern. Damit brauch ich im Script nicht mehr viel parsen.

    Für diesen Fall ist mein Problem (Aufgabe) gelöst, wie ich die Gruppeninformationen von einen Forest (Domainübergreifend) bekommen muss ich mir noch überlegen....aber das ist eine andere Herausforderung.

    lg
    Racer

  • Gruppenmitgliedschaft ermitteln

    • Racer
    • 7. Februar 2024 um 11:23

    Spät aber doch: Erster Test in der AD Umgebung!

    Leider bleibt das Script bei "If Not $colItems.count Then Return SetError(2) ; "Not found" einfach hängen....

    lg

    Racer

  • Gruppenmitgliedschaft ermitteln

    • Racer
    • 5. Februar 2024 um 20:04

    Hallo Schnuffel!

    Ich habe es jetzt nur zu Hause testen können, sieht aber auf den ersten Blick gut aus.
    Morgen kann ich es in der Arbeit ausprobieren, mal sehen ob es das gewünschte Ergebnis bringt!

    Zur Info: Es soll ermittelt werden ob ein Computer in eine bestimmten AD-Gruppe ist. Aber jetzt nicht das AD abfragen (so ruft Water gleich "hier" ^^), sondern ob die Gruppeninformation am Client ist.

    Hintergrund: Am Ende soll entschieden werden ob das Programm ausgeführt werden darf (auch offline), zuvor muss aber einmal die Gruppe ermittelt werden!

    lg
    Racer

  • Gruppenmitgliedschaft ermitteln

    • Racer
    • 2. Februar 2024 um 11:56
    Zitat von BugFix

    Das Arbeiten mit der CMDLine geht doch mit AutoIt.

    AutoIt
    Func _CMDLineRead($_sCMD)
        Local $PID = Run(@ComSpec & " /c " & $_sCMD, "", @SW_HIDE, $STDOUT_CHILD)
        Local $sLine, $sOutput = ''
        While 1
            $sLine = StdoutRead($PID)
            If @error Then ExitLoop
            If StringStripWS($sLine, 8) <> '' Then $sOutput &= $sLine
        WEnd
        Return $sOutput
    EndFunc
    
    
    $group = _CMDLineRead("whoami /groups")
    ConsoleWrite($group & @CRLF)
    Alles anzeigen

    Ja, schon klar!
    Ich wollte nur wissen ob es da was schönes direkt im AutoIT gibt....

    lg
    Racer

  • Gruppenmitgliedschaft ermitteln

    • Racer
    • 2. Februar 2024 um 10:12

    Hallo!

    Ich bin auf der Suche wie ich die Mitgliedschaft einer Gruppe am Client ermitteln kann (diesmal nicht via AD).

    Auf der Commandlineebene mache ich das mit "whoami /groups" bzw. "whoami /groups | findstr /i "gesuchte gruppe". Gibt es so was im AutoIt oder muss ich da wohl oder über über die CMD gehen?

    lg

    Racer

  • ASCII-Art

    • Racer
    • 30. Januar 2024 um 07:54
    Zitat von Alina

    Wolfenstein? Ja, aber auf ein 486DX100 (meine ich) und danach Doom. und irgendwann Lemminge. Habe heute noch alle Doom und Lemmingeversionen und funktionieren noch.

    Die ganz ganz jungen Jahre. Wolfenstein meine ich war zumindest in Deutschland verboten. Aber wen interessierte das in dem jungen Alter?

    Atari, C64, Schneider, .... war damals im Familienkreis unterwegs.

    Und Datenübertragung mit Akustikkoppler via Telefonhörer. Zumindest bei meinem Vater wegen seinem Beruf seeeehr früh. Daten zwischen der USA und DK ausgetauscht. Ohne Telefonflat.

    Oder die PCs mit Kabel verbinden und man brauchte ein Endwiderstand. Wir haben damals kleine Löcher durch unsere Kinderzimmerwände gebohrt. Klein war dann so, das fast eine kleine Suppenkeller durch passte. Als das unsere Elter sahen, gab es "Durchzug" (Ärger und PC war paar Wochen weg). Was man als Teenager nicht alles ohne überlegen gemacht hat.

    486DX100 ....das ist ein hochmoderner Computer gegen einen C64....da sieht man was Du für ein junges Mäderl bist;)

    Ich hatte Glück, in Österreich war Wolfenstein nicht am Index, ich glaube so was hat es nur für Filme gegeben, aber nicht für Software.....

    lg

    Racer

  • ASCII-Art

    • Racer
    • 27. Januar 2024 um 12:14
    Zitat von Musashi

    ... und dann noch die selbst gemachte Aufrüstung, bei der man mit einem Heißdrahtschneider einen Schlitz in das Gehäuse der Floppy gebrannt hat, um ein Parallelkabel 'reinzupulen ^^.

    Mein Gott, was habe ich da Geld ausgegeben....Speeddos Plus, Dolphin-Dos, mehrfach Umschaltplatine (selbst geätzt), 4Mhz-Karte von Rossmöller...Video Digitalisierer Marke Eigenbau, hunderte Floppydisks....

  • ASCII-Art

    • Racer
    • 26. Januar 2024 um 18:31
    Zitat von Schnuffel

    lol

    ich erinnere mich noch an Wolfenstein auf dem Commodore C64 ^^

    1 Stunde mit der Datasette von einer Kasette die Daten laden,

    Datasette...jetzt habe ich Pipi in den Augen:love:.....mein Gott ist das lange her.
    Mein erster Computer war ein VC-20 mit Datasette....3.5Kbyte Hauptspeicher....Heute hat jede Wanduhr mehr Kapazität
    Jahre später der Aufstieg: C64 mit Floppydisk....


    lg
    Racer

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™