Synthaxfrage zu RUN

  • Hallo,

    ich möchte folgenden Powershellbefehl powershell -Command "Invoke-WebRequest -Uri 'http://192.168.8.66/cm?cmnd=Power%20On'"  >nul

    mit "Run" in einem Script ausführen. Durch die Anführungszeichen bekomme ich aber immer Fehlermeldungen.

    Könnte mir bitte jemand helfen wie ich die Befehlszeile mit Run ausführen kann?

    Vielen Dank

  • Hi igillan 👋 ,

    meine Vermutung ist, dass du die Response, also das Ergebnis des Requests, nun aus der Console auslesen möchtest und irgendetwas damit machen möchtest, richtig?
    Falls du doch über Powershell gehen willst oder musst, gib Bescheid - dafür gibt es eingie Beispiele im Forum.

    Nachteil mit Powershell: Ggf. sind Berechtigungen nicht vorhanden um den Code oder ein *.ps-Skript auszuführen und du musst diese per Policy Bypass erwirken.
    Nachteil von cURL: Meines wissens nach erst mit Windows 10 standard mäßig vorinstalliert.

    Mit pur AutoIt würde es sicherlich auch funktionieren. Stichwort ist hierzu "WinHttp.au3".

    Bin neugierig was du machen willst. Das command "Power on" scheint ja erstmal nur ein Health Check/Status Check zu sein ... da kommt sicherlich noch einiges oder 😅 ?

    Viele Grüße
    Sven

  • mit "Run" in einem Script ausführen. Durch die Anführungszeichen bekomme ich aber immer Fehlermeldungen.

    Um in AutoIt einen String zu definieren muss man ihn entweder in doppelte Anführungszeichen setzen oder in einfache.
    Beide Varianten existieren unter anderem, damit man im String die jeweils anderen Anführungszeichen verwenden kann.
    Würde man z.B. einen String in doppelte Anführungszeichen anfangen und im String selbst sollen wiederrum selbst doppelte vorkommen, dann hat der Interpreter keine Chance zu unterscheiden ob die Anführungszeichen nun das Ende des Strings definieren sollen oder zum Inhalt der Zeichenkette gehören sollen.

    Nun hast du allerdings einen Fall, bei dem im String selbst sowohl doppelte als auch einfache Anführungszeichen vorkommen.
    Hier gibt es noch eine weitere Methode um diese dann für den Interpreter zu maskieren: doppeln
    Sprich: Wenn man einen String in doppelten Anführungszeichen einschließt und darin auch doppelte Anführungszeichen verwenden möchte, dann schreibt man diese 2x: $sString = "Ein ""Test"" für Anführungszeichen"
    Analog würde man dies mit den einfachen auch machen.

    Sprich: Du musst festlegen ob du deinen String in doppelten oder einfachen Anführungszeichen definieren willst und dann dieses Zeichen im String selbst doppeln.
    Dann wird alles als gemeinsamer String erkannt.

  • Danke für die Antworten. Da ich das Script ohnehin nur auf Win10 nutzen werde, ist die Lösung mit curl für mich vollkommen ausreichend.

    SOLVE-SMART Ich möchte einfach nur ein paar Tasmota Steckdosen schalten, also nichts kompliziertes ;)

  • Ich möchte einfach nur ein paar Tasmota Steckdosen schalten

    Dann brauchst du eigentlich keine externen Geschichten wie powershell oder curl.
    Ein InetRead("http://192.168.8.66/cm?cmnd=Power%20On") sollte den gleichen Effekt haben.

    Je nachdem was du genau machen möchtest, wäre evtl. MQTT die effektivere Wahl.
    Tasmota unterstützt das glaube ich auch.
    Aber den genauen Anwendungsfall kennen wir ja nicht.