RunAsWait verwenden

  • Hallo!

    Ich habe eine Frage zum Befehl RunAsWait.
    Ich versuche eine externe Batchdatei mit Admin-Rechten aufzurufen. Dabei werden einige Parameter übergeben.

    [autoit]

    RunAsWait("admin", @ComputerName, "passwort", 0, "ricoh.cmd " & Chr (34) & $drucker2 & Chr (34) & " " & Chr (34) & $drucker3 & "oemsetup.inf" & Chr (34) & " " & Chr (34) & "IP_" & $drucker4 & Chr (34), @SystemDir)

    [/autoit]


    Anscheinend wird die Batch aber nicht gefunden, wenn ich den Benutzer wechsle, da es mit RunWait funktioniert.
    Wie kann ich den aktuelle gültigen Pfad (auch Netzwerk) mitgeben?

    Einmal editiert, zuletzt von lionking (20. November 2008 um 12:09)

  • [autoit]

    RunAsWait("admin", @ComputerName, "passwort", 0, "\\Server\freigabe\ricoh.cmd " & Chr (34) & $drucker2 & Chr (34) & " " & Chr (34) & $drucker3 & "oemsetup.inf" & Chr (34) & " " & Chr (34) & "IP_" & $drucker4 & Chr (34), @SystemDir)

    [/autoit]


    \\Server\freigabe\ sollte das Problem lösen (Zugriffsrechte müssen natürlich bestehen...)

  • Das mit \\Server\Freigabe wäre sicher möglich, würde mich aber auf genau diesen Server beschränken, was aber nicht der Fall sein soll.

    Alternativ wäre, folgenden Befehl mit AutoIT ausführen zu lassen:

    Code
    rundll32 printui.dll,PrintUIEntry /if /b "RICOH Aficio SP 4100N PCL 6" /f "Z:\Treiber\Drucker\Ricoh\SP4100N\oemsetup.inf" /r "IP_172.20.101.114" /m "RICOH Aficio SP 4100N PCL 6" /Y

    Ich habe es nicht geschafft, diesen Befehl so zu gestalten, dass ich ihn mit RunWait laufen lassen könnte.
    Liegt wohl daran, dass die Anführungszeichen nicht richtig umgesetzt werden. Ich habe versuchte, diese mit CHR (34) zu ersetzen, was aber immer zu einer Fehlermeldung geführt hat.

    [autoit]

    Runwait("rundll32.exe printui.dll,PrintUIEntry /if /b " & Chr (34) & $drucker2 & Chr (34) & " \f " & Chr (34) & $drucker3 & "oemsetup.inf" & Chr (34) & " /r " & Chr (34) & "IP_" & $drucker4 & Chr (34) & " /m " & Chr (34) & $drucker2 & Chr (34) & " /Y")

    [/autoit]

    Daher habe ich diesen Befehl in eine Batch ausgegliedert. Wenns im Script selbst irgendwie geht, wäre das sogar noch besser.

  • 1
    Runwait("rundll32.exe printui.dll,PrintUIEntry /if /b " & Chr (34) & $drucker2 & Chr (34) & " \f " & Chr (34) & $drucker3 & "oemsetup.inf" & Chr (34) & " /r " & Chr (34) & "IP_" & $drucker4 & Chr (34) & " /m " & Chr (34) & $drucker2 & Chr (34) & " /Y")


    Ohne Dein Problem wirklich lösen zu können sehe ich zumindest zwei Problemstellen:

    " \f " - hätte da nicht " /f " stehen sollen?

    $drucker3 & "oemsetup.inf" - keine Trennung dazwischen erforderlich?

    Bei mir funktioniert das mit dem Chr(34) (in anderem Zusammenhang) einwandfrei.

    Hang loose, haklesoft

  • Ich bin mir nicht ganz sicher, aber ich denke, autoit kann das mit dem RunAsWait irgendwie nicht so richtig^^

    Ich Probiere selbst seit Tagen mit RunWait, RunAsWait eine CMD Datei zu benutzen, leider ohne Erfolg...

    [autoit]


    RunASWait("Administrator", @ComputerName, "sagichnicht",0,"c:\scripte\sw.cmd")

    [/autoit]

    Auch dieses hier hat nicht funktioniert... da ich mit einer Config.ini arbeite:

    [autoit]


    RunASWait("Administrator", @ComputerName, "sagichnicht",0,$s_app)

    [/autoit]

    Wobei $s_app den Pfad in die Config findet...

    Ist jetzt zwar keine Lösung für dein Problem, aber da ich ja eigentlich das selbe Problem habe, dachte ich mir kannsch mich dir gleich direkt mit anschlißen

    Volumeman

    P.s: Ich will dieses script fürn Exchange-Server benutzen, damit ich ein Powershell-Script über die CMD ausführen kann

    Jemand ne Idee

    Einmal editiert, zuletzt von Volumeman (20. November 2008 um 11:40)

  • Ich konnte dank euerer Hilfe und einiger anderer Beiträge im Forum das Problem nun lösen.
    Es hat anscheinend wirklich an dem falschen Parameter "/f" gelegen, der das Problem verursacht hat.
    Komisch dabei war, dass die gleiche Zeile als Batch funktioniert hat.

    Hier jetzt mal der Code für den Aufruf mit RunAsWait:

    [autoit]

    $drucker = $arCSV[$y]
    $drucker1 = $drucker[7] ;Freigabename ermitteln
    $drucker2 = $drucker[2] ;Druckername ermitteln
    $drucker3 = $drucker[13];Treiber-Pfad ermitteln
    $drucker4 = $drucker[5] ;IP ermitteln
    $drucker5 = $drucker[3] ; Abteilung ermitteln
    RunAsWait("admin", @ComputerName, "passwort", 0, @ComSpec & ' /c ' & '%systemroot%\system32\cscript.exe %systemroot%\system32\prnport.vbs -a -r IP_' & $drucker4 & ' -h 10.0.0.20 -o raw -n 9100')
    RunASwait("admin", @ComputerName, "passwort", 0, "rundll32.exe printui.dll,PrintUIEntry /if /b " & chr (34) & $drucker2 & " (" & $drucker[1] & ")" & chr (34) & " /f " & chr (34) & $drucker3 & "oemsetup.inf" & chr (34) & " /r " & chr (34) & "IP_" & $drucker4 & chr (34) & " /m " & chr (34) & $drucker2 & chr (34) & " /Y") ;Drucker installieren, warten bis Vorgang abgeschlossen

    [/autoit]

    Danke für eure Hilfe.