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. ibicis

Beiträge von ibicis

  • Wie verknüpfe ich die LocalAppData-Variable mi einem Pfad unterhalb davon?

    • ibicis
    • 2. Mai 2018 um 18:21
    Zitat von Kanashius

    Das Makro heißt zumindest bei mir: @LocalAppDataDir. also müsste deine Zeile so lauten:

    DirRemove(@LocalAppDataDir & "\TslGame\Saved\Crashes\.",1)

    Du solltest normal auch den Fehler error: undefined macro sehen...

    So ist es. Den Fehler bekam ich bei meinem Herumprobieren, ich probierte viele Varianten aus, traf jedoch die korrekte Syntax nicht. Dein Vorschlag funktioniert, vielen Dank dafür!

    Zitat von misterspeed

    Der Fehler hier ist doch recht offensichtlich. Da ist ein "Punkt" am Ende des Pfades, welcher wohl auch die Ursache dafür sein wird, dass der Aufruf scheitert.

    Ich fand dieses Bsp. bei meiner Suche nach dem Löschen von Ordnern und Sub-Ordnern hier (Vorschlag vom User "/dev/null"): https://www.autoitscript.com/forum/topic/16…#comment-113788

    Einen Fehler gibt es bei der Ausführung nicht, der Befehl funktioniert wie erwünscht. Ich interpretiere den Punkt als Wildcard für "alles darunter", weiß aber nicht wirklich, wofür er steht.

  • Wie verknüpfe ich die LocalAppData-Variable mi einem Pfad unterhalb davon?

    • ibicis
    • 2. Mai 2018 um 17:10

    Hallo,

    ich konvertiere ein au3-Script zu einer Exe, die ein Verzeichnis inklusive Unterverzeichnissen löscht. Mit absoluter Pfadangabe funktioniert es wunschgemäß, nur die Variable für "C:\Users\testuser\AppData\Local\" kann ich nicht funktionierend umsetzen. Das Script sieht bislang so aus:

    DirRemove("C:\Users\testuser\AppData\Local\TslGame\Saved\Crashes\.",1)

    Kann ich die Variable für $localappdata mit TslGame\Saved\Crashes direkt verknüpfen oder wie mache ich das? So funktioniert es nicht:

    DirRemove(@localappdata & "\TslGame\Saved\Crashes\.",1)

    Muss ich AutoIt evtl. erst einmal die Umgebungsvariablen ermitteln lassen, sprich eine Variable dafür definieren, damit es funktioniert? Danke vorab.


    MfG ibicis

  • Programmfenster nach PW-Eingabe öffnen

    • ibicis
    • 25. Februar 2013 um 15:51
    Zitat von Torni
    [autoit]

    FileReadLine ( "filehandle/filename" [, line] )

    [/autoit]

    Hilfe lesen hilft manchmal *G*

    Die Hilfe las ich, ich kann aber [, line] syntaktisch nicht umsetzen. Bei ", 0" wird jede Zeile ausgegeben, bei ", 2" bekomme ich die Antwort, dass die Datei nicht zu öffnen ist.

  • Programmfenster nach PW-Eingabe öffnen

    • ibicis
    • 24. Februar 2013 um 17:33

    Oh, das ist einfacher, als ich glaubte. Einfach oben folgendes eingeben, dann geht es:

    Code
    $passwort = "passwort"
    If InputBox ("Passwort eingeben","Bitte gib das Passwort ein","","*") <> $passwort Then
    	MsgBox (64,"Falsch","Falsches Passwort!",5)
    	Exit
    EndIf


    Dann bleibt nur noch Frage 2 zu klären.

  • Programmfenster nach PW-Eingabe öffnen

    • ibicis
    • 24. Februar 2013 um 17:23

    Mein Ziel ist es, ein kleines Helferlein zu erstellen, das Schnellzugriffe auf admin. Tools ermöglicht, ohne jeweils das Admin-PW eingeben zu müssen. Da die User selbst keine Admins sind und das Tool für jeden frei zugänglich ist, muss der Aufruf des Hauptfensters zuvor per PW gesichert werden.
    das Hauptfenster schaut so aus:

    C
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=icons\tool.ico
    #AutoIt3Wrapper_Outfile=helferlein.exe
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstants.au3>
    
    
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Helferlein", 240, 190, 193, 225)
    $Label1 = GUICtrlCreateLabel("(A) = wird als domain\Administrator ausgeführt", 16, 8, 400, 17)
    $Button1 = GUICtrlCreateButton("CMD (A)", 20, 30, 90, 25, 0)
    $Button2 = GUICtrlCreateButton("MMC (A)", 20, 60, 90, 25, 0)
    $Button3 = GUICtrlCreateButton("Editor", 20, 90, 90, 25, 0)
    $Button4 = GUICtrlCreateButton("Dienste (A)", 20, 120, 90, 25, 0)
    $Button5 = GUICtrlCreateButton("Software (A)", 20, 150, 90, 25, 0)
    $Button6 = GUICtrlCreateButton("Taskmanager (A)", 130, 30, 90, 25, 0)
    $Button7 = GUICtrlCreateButton("Event Viewer (A)", 130, 60, 90, 25, 0)
    $Button8 = GUICtrlCreateButton("MSTC", 130, 90, 90, 25, 0)
    $Button9 = GUICtrlCreateButton("Anzeige (A)", 130, 120, 90, 25, 0)
    $Button10 = GUICtrlCreateButton("Sys-Info", 130, 150, 90, 25, 0)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###
    
    
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $Button1
    			RunAs("Administrator", "domain.local", "password", 0, "C:\Windows\system32\cmd.exe", "C:\Windows\system32")
            Case $Button2
                RunAs("Administrator", "domain.local", "password", 0, "C:\Windows\system32\mmc.exe", "C:\Windows\system32")
    		Case $Button3
    			Run("C:\Windows\system32\notepad.exe")
    		Case $Button4
    			RunAs("Administrator", "domain.local", "password", 0, "C:\Windows\system32\services.msc", "C:\Windows\system32")
    		Case $Button5
    			RunAs("Administrator", "domain.local", "password", 0, "rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl", "C:\Windows\system32")
    		Case $Button6
    			RunAs("Administrator", "domain.local", "password", 0, "C:\Windows\system32\taskmgr.exe", "C:\Windows\system32")
    		Case $Button7
    			RunAs("Administrator", "domain.local", "password", 0, "C:\Windows\system32\eventvwr.exe", "C:\Windows\system32")
    		Case $Button8
    			Run("C:\Windows\System32\mstsc.exe")
    		Case $Button9
    			RunAs("Administrator", "domain.local", "password", 0, "C:\Windows\system32\rundll32.exe shell32.dll, Control_RunDLL desk.cpl", "C:\Windows\system32")
    		Case $Button10
    			ShellExecute("msinfo32")
        EndSwitch
    WEnd
    Alles anzeigen

    Wie kann ich erreichen, dass vor dem Aufruf dieses Fensters ein PW-Abfragedialog erscheint? Ich fand hier schon einmal gute Möglichkeiten, kann die Tipps aber nicht sinnvoll einbinden, da es mir da doch an dem nötigen Wissen fehlt. Es soll nur das Hauptfenster per PW geschützt werden, danach ist die PW-Abfrage nicht mehr nötig, wenn die anderen Systemprogramme gestartet werden.

    Eine weitere, nicht ganz so wichtige Frage:
    In C:\windows liegt eine INI-Datei, aus der Zeile 2 ausgelesen werden soll. Die AutoIt-Hilfe gibt folgende Syntax aus, die ich abwandelte:

    Code
    Local $file = FileOpen("c:\windows\Pex.INI" , 0)
    
    
    ; Prüfen, ob Datei eingelesen wurde
    If $file = -1 Then
        MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
        Exit
    EndIf
    
    
    ; Zeilen des Textes einlesen bis EOF
    While 1
        Local $line = FileReadLine($file)
        If @error = -1 Then ExitLoop
        MsgBox(0, "Zeile gelesen:", $line)
    WEnd
    
    
    FileClose($file)
    Alles anzeigen

    Mit dieser Syntax kann ich nur sämtliche Zeilen auslesen, die mir dann auch Zeile für Zeile ausgegeben werden, mir kommt es aber nur auf Zeile 2 an (es soll auch nur Zeile 2 ausgegeben werden). Ich probierte bereits alles mögliche aus, komme aber nicht weiter. Wie muss die Syntax ausschauen?
    Danke vorab.

  • Wie realisiere ich "Ausführen als..." in AutoIt?

    • ibicis
    • 6. Juni 2012 um 16:38

    Ich fordere nicht frech, ich erwarte nur sachbezogene Antworten zu problembezogenen Fragen. Einige User hier zeigten mir bereits, dass sie dieses Forum auch dementsprechend verstanden und in diesem Sinne handelten.


    Zitat von chip

    Merkst was? DU musst sie erfüllen also solltest DU es auch suchen und DU es lernen. Wenn Frech was fordern willst und die Hinweise über die Unsicherheit deines vorhabens nicht haben willst, dann Versuch dein Glück in den Bereich: https://autoit.de/index.php?page=Board&amp;boardID=51

    Ich merke bspw., dass Orthografie nicht zu deinen Stärken zählt und dass du Dativ und Akkusativ nicht auseinanderzuhalten vermagst. Also solltest DU es auch suchen und lernen - ich empfehle dir diese Lektüre. Alternativ hätte ich dir auch sagen können, wo konkret die Fehler liegen, aber das hätte dich 1. u.U. direkt zur Problemlösung geführt (Das wollen wir natürlich nicht. Wo bleibt denn da der Spaß?) und 2. mir zu wenig Spielraum für infantile Trollerei gelassen. Das war es von mir zu diesem Thema.*


    Nun begebe ich mich wieder weg von diesem Niveau hin zu meiner Problemfrage und poste allen, die nun noch zur themenbezogenen Diskussion bereit sind, einen Code-Schnipsel, mit dem es zu funktionieren scheint:

    Code
    Local $pid = RunAsWait("Administrator", "domain.local", @ComputerName, "password", 0, @ComSpec, @SystemDir) 
     				$iResult = ShellExecuteWait("PsExec.exe", "\\servername\ -u domain\Administrator -p password -accepteula schtasks /run /TN dienst-restart", "", "", @SW_HIDE)

    Wozu dient z.B. die Variable(?) $pid? Ohnedem scheint es nicht zu gehen; setze ich sie ein, läuft die Ausführung problemlos.
    *Ich entschuldige mich für meinen Ausrutscher am Post-Anfang,
    mir geht nur bei einer solchen Diskussions"Kultur" manchmal der Hut
    hoch, so wie gerade geschehen.

  • Wie realisiere ich "Ausführen als..." in AutoIt?

    • ibicis
    • 6. Juni 2012 um 15:54
    Zitat von Christoph54

    Wie wäre es wenn du dich erst einmal mit den Anfänger-Tutorials oder Pee's Autoit-Buch beschäftigen würdest?! Denn wenn du die Grundlagen beherrschen würdest, wäre dir auch klar, dass RunAs() ein eigenständiger Befehl ist und auch, dass du nur die benötigten Parameter in der Hilfe nachschlagen müsstest... ;)

    Das ist generell eine gute Idee, nur habe ich hier bereits ein bestehendens, funktionierendes Konstrukt, in das ich den RunAs-Befehl einbinden möchte. Wie wäre es, mir zu meinen Fragen konstruktive, themenbezogene Antworten zu geben oder sich im Zweifelsfall zurückzuhalten, bevor philosophische Diskussionen über Sinn oder Unsinn diverser Vorgaben, die ich erfüllen muss, losgetreten werden?

  • Wie realisiere ich "Ausführen als..." in AutoIt?

    • ibicis
    • 6. Juni 2012 um 15:10
    Zitat von chip

    Die Frage ist ob das wirklich willst. Autotiscripte kann jeder DAU mit einem klick decompilieren und hat damit dein Adminpasswort.

    Darum ging es in meiner Frage nicht.

  • Wie realisiere ich "Ausführen als..." in AutoIt?

    • ibicis
    • 6. Juni 2012 um 14:29

    Muss der Befehl RunAs in eine separate zeile eingefügt werden, danach dann ShellExecuteWait? Kann mir jemand helfen, ich weiß nicht, ob mein Vorhaben überhaupt umsetzbar ist? Danke vorab.

  • Wie realisiere ich "Ausführen als..." in AutoIt?

    • ibicis
    • 6. Juni 2012 um 11:52

    Weißt du u.U., wo ich diese Option in mein Script einbinde? Ich lese bereits in der Hilfe herum, komme aber leider nicht weiter. Ich weiß nicht, wie ich RunAs vor das ShellExecuteWait einbinde bzw. ob es dort überhaupt korrekt eingefügt werden muss.

    P.S.: Wenn ich anstelle ShellExecuteWait RunAs bzw. RunAsWait einfüge, kommt zwar die Meldung, die Anforderung sei erfolgreich ausgeführt worden, dies ist aber nicht der Fall (ich teste es, indem ich einen Task aufrufe, der den Spooler beendet).

  • Wie realisiere ich "Ausführen als..." in AutoIt?

    • ibicis
    • 6. Juni 2012 um 11:34

    Danke sehr. Nun wird, wenn man kein Admin ist, der Auth.Dialog aufgerufen. Der Benutzer kennt das PW des Adminis nicht, er soll es auch nicht kennen. An welcher Stelle im Code hinterlege ich das PW, sodass es automatisch im Admin-Kontext ausgeführt wird, ohne dass die PW-Abfrage erscheint?

  • Wie realisiere ich "Ausführen als..." in AutoIt?

    • ibicis
    • 6. Juni 2012 um 10:49

    Ich hatte seinerzeit hier bereits nach einer Möglichkeit gefragt, mittels AutoIt ein Programm zu starten, das auf einem Server einen Task startet: [ gelöst ] AutoIt - Neuling benötigt Hilfe mit Batch
    Die Syntax schaut folgendermaßen aus und funktioniert als Admin fehlerfrei:

    Code
    #include <GUIConstants.au3>
    
    
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("ZEG-Neustart", 226, 63, 193, 125)
    $Label1 = GUICtrlCreateLabel("Wollen Sie den Dienst neu starten?", 18, 8, 196, 17)
    $Button1 = GUICtrlCreateButton("Ja", 20, 32, 75, 25, 0)
    $Button2 = GUICtrlCreateButton("Nein", 110, 32, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###
    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $Button1
                $iResponse = MsgBox(36, "Bestätigung", "Sind Sie sicher?")
                If $iResponse = 7 Then
                    MsgBox(64, "Abbruch", "Der Vorgang wurde vom Benutzer abgebrochen.", 2)
                    Exit
                ElseIf $iResponse = 6 Then
                    $iResult = ShellExecuteWait("PsExec.exe", "\\servername\ -u domain\Administrator -p password -accepteula schtasks /run /TN dienst-restart", "", "", @SW_HIDE)
                    If $iResult <> 0 Then
                        MsgBox(16, "Fehler!", "Keine verbindung zum Server")
                    Else
                        $iResponse_Y = MsgBox(64, "Erfolgreich", "Der Dienst wurde neu gestartet")
                        If $iResponse_Y = 1 Then Exit
                    EndIf
                EndIf
            Case $Button2
                $iResponse2 = MsgBox(64, "Abbruch", "Der Vorgang wurde vom Benutzer abgebrochen.")
                If $iResponse2 = 1 Then
                    Exit
                EndIf
        EndSwitch
    WEnd
    Alles anzeigen


    Führe ich die Exe allerdings als User ohne Adminrechte aus, scheitert die Authentifizierung am Server, es muss ein "Ausführen als..." her. Nur, wie bzw. wo binde ich diese Option ein, PsExec muss als Admin gestartet werden? Hier fand ich eine Anregung, wie diese Option syntaktisch umgesetzt wird, allerdings führen meine Versuche stets zu Parsing- und anderen Fehlern: [ gelöst ] "RunAs" und ausführen als Administrator funktioniert nicht
    Gibt es für meine Frage eine Lösung? Ich hatte in die Zeile mit dem Aufruf von PsExec folgendes eingetragen:

    Code
    $iResult = ShellExecuteWait(RunAs("administrator", @pc-name, "password", 0,"PsExec.exe"), "\\servername\ -u domain\Administrator -p  password -accepteula schtasks /run /TN dienst-restart", "", "", @SW_HIDE)
  • AutoIt - Neuling benötigt Hilfe mit Batch

    • ibicis
    • 27. Oktober 2011 um 12:36
    Zitat von misterspeed

    ...
    Die bessere Lösung wäre auf dem Zielsystem einen Serverdienst einzurichten der Kommandos von Clienten annimmt und dann lokal als Admin ode System die Aktion auf dem Server ausführt. So wäre das Passwort nur auf dem Server gespeichert und von Ausserhalb nicht auslesbar.
    ...

    Genau das hatte ich anfangs getan. Ich hatte auf dem Zielsystem einen deaktivierten Task eingerichtet, der eine weitere Batch (die eigentlich relevante, die den Dienst killt) aufruft, mit Adminrechten läuft und die Anmeldedaten dort lokal mit dem Assistenten hinterlegt. Die Batch rief per psexec diesen Task auf und alles war erledigt. Das Ganze funktionierte einwandfrei, bis man meinte, der direkte Weg zur Batch auf dem Zielsystem wäre die bessere Lösung, um auf dem Zielsystem nicht noch eine weitere potentielle Fehlerquelle einzubauen. Nun musste ich alles wieder ummodeln und die Anmeldedaten waren plötzlich relevant. Als ich diese Forderung umgesetzt hatte kam plötzlich die Notwendigkeit ins Spiel, alle offenen Bezüge zur DB zu killen, die als Überreste des nicht mehr reagierenden SQl-Dienstes über waren. Da die openfiles.exe aber nicht besonders gut filtern kann, musste ich per se alle Handles trennen, somit auch das von psexec und der Rückgabewert war somit 1. Ohne den Taskplaner kann ich diese Option aber nicht umsetzen, denn nachdem der Task erfolgreich aufgerufen wird, gibt dieser den Wert 0 zurück und die AutoIt-Anwendung eine Erfolgsmeldung aus. Die Batch auf dem Zielsystem arbeitet inzwischen alle Befehle ab.
    So kanns laufen, wenn Anforderungen in jedem Dialog geändert werden.

  • AutoIt - Neuling benötigt Hilfe mit Batch

    • ibicis
    • 20. Oktober 2011 um 16:39

    Nun ist ein Problem aufgetaucht, mit dem ich gar nicht gerechnet hatte.
    Im Script wird PsExec aufgerufen, dieses verbindet sich mit dem Remotecomputer. Auf meinem PC läuft alles tadellos. Wird die Aktion jedoch auf einem Rechner getartet, der die PsTools noch niemals geöffnet hatte, muss man einmalig die EULA für jedes Tool abnicken, damit es weitergeht. Mit der Option "/accepteula" (ohne ") kann ich PsExec starten und die EULA trägt sich in die Registry ein. Binde ich diese Option in AI ein, startet es mit der Fehlermeldung "PsExec.exe /accepteula" konnte nicht gefunden werden.
    Ohne diese Option startet psexec ohne UI und wartet auf die EULA-Bestätigung.
    Wie kann ich die Option einbinden? Der String schaut aktuell so aus:
    ("PsExec.exe", "\\ziel-computer\ -u domain\Administrator -p password schtasks /run /TN dienst-neustart", "", "", @SW_HIDE)

    So müsste es aussehen mit der Option:

    ("PsExec.exe /accepteula", "\\ziel-computer\ -u domain\Administrator -p password schtasks /run /TN dienst-neustart", "", "", @SW_HIDE)

    Gibt es eine Möglichkeit, die Option einzubinden? Danke vorab.

    P.S.: So muss der String aussehen, dann klappt's auch mit dem Nachbarn!

    ("PsExec.exe", "\\ziel-computer\ -u domain\Administrator -p password -accepteula schtasks /run /TN dienst-neustart", "", "", @SW_HIDE)

  • AutoIt - Neuling benötigt Hilfe mit Batch

    • ibicis
    • 13. Oktober 2011 um 14:43

    Tausend Dank euch beiden! :thumbup:

  • AutoIt - Neuling benötigt Hilfe mit Batch

    • ibicis
    • 13. Oktober 2011 um 14:08

    Danke sehr, das probiere ich gleich mal aus.
    Frage: Wie kann ich dem Programm sagen, dass das remote auszuführende Script, in deinem Bsp. "c:\Install\test.cmd", Leerzeichen im Namen hat? Der Pfad wäre nämlich in meinem Fall "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\...". Kann ich das, wie hier, mittels "" definieren? Falls es gar nicht geht, erstelle ich notfalls einen Pfad, der keine Leerzeichen enthält.

  • AutoIt - Neuling benötigt Hilfe mit Batch

    • ibicis
    • 13. Oktober 2011 um 08:38
    Zitat von Mike280399


    ...
    #EDIT: Mir ist grad aufgefallen das Du ja lt. Deinem ersten Post

    Code
    psexec.exe \\sql-server1\ -u administrator -p passw0rd schtasks /run /TN restart-dienst

    ausführen wolltest.
    Musst das ja dann jetzt entsprechend ändern im Skript :D

    Jo, das habe ich natürlich gemacht. :)

    Zitat von Mike280399


    Die sql-restart.cmd liegt auf Deinem Rechner nehme ich an ??
    Wenn ja, pack`se Mal in das gleiche Verzeichnis wie das Skript.
    Ach ja, wenn Du`s so änderst müsste es meiner Ansicht nach klappen.
    Auch die UI`s werden geschlossen :D

    Nein, die SQL-Restart.cmd liegt auf dem Remote-Rechner. Lokal liegen nur Das Script selbst und PsExec.exe. Die Parameter werden also an das lokal befindliche psexec übergeben, das dann remote die SQL-Restart.cmd ausführt. Wie gesagt, das ganz am Anfang gepostete Script funktioniert einwandfrei, gefiel aber aus eingangs erwähnten Gründen meinem Vorgesetzten nicht.
    Trotzdem vielen Dank für deine Mühe, ich weiß das sehr zu schätzen. Invielen Foren wird so pragmatisch eher nicht geholfen, das kommen da eher so Komentare a la "Ja, lerne halt die Scriptsprache xyz." was mich dann auch nicht weiterbringt.

    Ich probiere deinen Vorschlag mal aus und werde sehen, wa sich ergibt.

  • AutoIt - Neuling benötigt Hilfe mit Batch

    • ibicis
    • 12. Oktober 2011 um 16:51

    Wunderbar, danke sehr.
    Leider klappt der Aufrug von psexec offenbar nicht. Gebe ich in eine Batch "psexec \\sql-server1\ "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien\sql-restart\sql-restart.cmd" -u administrator -p passw0rd" (habe es der Einfachheit halber mal direkt mit der CMD ohne Umweg über den Taskplaner gemacht) ein und führe diese aus, wird der Dienst neugestartet. Beim Aufruf über AutoIt klappt es leider nicht.

    Noch eine Frage. Ist es möglich, das Script so anzupassen, dass beim Aufruf der psexec.exe beide UIs geschlossen werden?
    Danke vorab.

  • AutoIt - Neuling benötigt Hilfe mit Batch

    • ibicis
    • 12. Oktober 2011 um 11:54

    Hallo und viele Grüße von einem Neuling, sowohl im Forum, als auch in AutoIt.

    Zu meinem Problem. Ich habe eine Batch gebastelt, die nach Aufruf eine Aktion abfragt. Es soll ein Dienst neugestartet werden, dabei werden Username und Passwort übertragen:

    Code
    @echo off 
    
    
    :auswahl1 
    set /p frage1="Wollen Sie den Dienst neustarten? Eingabe 'ja' (ohne ') - Dienst wird neu gestartet, Eingabe 'nein' (ohne ') - Dienst wird nicht neu gestartet, Eingabe 'ende' (ohne ') - Programm wird beendet, Bestaetigung jeweils mit 'Enter'-Taste:" 
    if /i %frage1%==ja goto ja 
    if /i %frage1%==nein goto nein 
    if /i %frage1%==ende goto end 
    goto nichts 
    
    
    :ja 
    echo Sie haben 'ja' eingegeben. 
    goto auswahl2 
    pause 
    
    
    :nichts 
    echo Sie haben eine falsche Antwort eingegeben. Sie kehren nun zum Anfang zurueck. 
    goto auswahl1 
    pause 
    
    
    :nein 
    echo Sie haben 'nein' eingegeben. Sie kehren nun zum Anfang zurueck. 
    goto auswahl1 
    pause 
    
    
    :auswahl2 
    echo Sind Sie sicher? Damit bestaetigen Sie im folgenden Schritt, dass Sie den Support nicht erreichten! Weiterhin wird eine E-Mail an Sie persoenlich versendet. Eingabe 'ja', 'nein', 'ende': 
    set /p frage2=Eingabe: 
    if /i %frage2%==ja goto start-dienst 
    if /i %frage2%==nein goto nein 
    if /i %frage2%==ende goto end 
    goto nichts 
    
    
    :start-dienst 
    echo Der Dienst wird neu gestartet. 
    
    
    psexec.exe \\sql-server1\ -u administrator -p passw0rd schtasks /run /TN restart-dienst 
    
    
    :end 
    echo Das Programm wird nun beendet. 
    pause 
    exit
    Alles anzeigen


    Es wird nun gewünscht, dass das Passwort des Admins nicht als Klartext übermittelt wird bzw. dass das Script keine temporären Dateien erstellt, aus denen das PW ausgelesen werden könnte.
    Ist es möglich, diese Anforderung mit AutoIt zu bewerkstelligen? Wenn ja, wo kann ich nach einer Lösung suchen bzw. wie würde die Syntax heißen, mit der dies möglich ist? Es müsste in diesem Fall psexec durch ein anderes Modul ersetzt werden, um den Task an den Remote-Computer zu übermitteln. Geht das mit AutoIt wie gewünscht?

    Ein weiterer Weg wäre evtl., diese Batch zu einer Exe zu kompilieren, jedoch bringt Aut2Exe die Fehlermeldung, dass ein String nicht geparsed werden konnte. Ist es mit AutoIt-Modulen generell nicht möglich, Batches zu ausführbaren Datein zu kompilieren?
    Danke vorab für jede Hilfe.

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™