Powershellcode in AutoItcode übersetzen

  • Hallo Gemeinde und Profis,

    Für ein BIOS-Verwaltungsprogramm muss ich eine BIOS-Option abfragen(Wake on LAN), bzw. versuchen zu ändern. dies geht gem. Lenovo mit folgender Powershellzeile:

    Code
    (gwmi -class Lenovo_SetBiosSetting –namespace root\wmi).SetBiosSetting("WakeOnLAN,Disable,password,ascii,us")

    Mein Problem: Das Proggi soll auch in Windows PE funktionieren. Das bedeutet dort kann ich obiges als Powershellscript nicht ausführen wegen fehlender runtimes(.Net).

    Kann man diese wmi-Abfrage nicht auch direkt per AUTOIT machen? Wenn ja könnte mir jemand die Syntax dazu zeigen?

  • "Mein Problem: Das Proggi soll auch in Windows PE funktionieren. Das bedeutet dort kann ich obiges als Powershellscript nicht ausführen wegen fehlender runtimes(.Net)."

    Dann füge Powershell deiner Win PE hinzu, dann funktioniert es auch.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Musashi 3. März 2020 um 07:43

    Hat den Titel des Themas von „Powershellcode in Auoitcode übersetzen“ zu „Powershellcode in AutoItcode übersetzen“ geändert.
  • Das ich kein 100%iger AutoIt-Programmierer bin damit kann ich leben aber was mir hier an Intelligenz offensichtlich
    zugetraut wird ist niederschmetternd...:cursing:;(:Face:

    Es wäre natürlich die nächstliegende Lösung gewesen. Aber wir reden hier von einer Enterprise-Umgebung in der nicht jeder
    machen kann was er will. Wenn Powershell in der PE-Umgebung(die von einem anderen Team administriert wird) nicht erlaubt ist, kann ich das auch nicht ändern.

    Es wäre daher besser zu sagen, dass es z.B. keine "Übersetzungsmöglichkeit" gibt, als eine Antwort die darauf abzielt das Problem zu umgehen. Eine Umgehung ist keine LÖSUNG.

    Davon abgesehen habe ich das Thema mittels VB-Script(auch vom Hersteller) gelöst. Damit ist das Thema erledigt.

    • Offizieller Beitrag

    Es wäre daher besser zu sagen, dass es z.B. keine "Übersetzungsmöglichkeit" gibt, als eine Antwort die darauf abzielt das Problem zu umgehen. Eine Umgehung ist keine LÖSUNG.

    Nun, in ca. 70% aller Fragestellungen ist die "Umgehung" die bessere Lösung (xy-Problem).

    Natürlich kann man mit AutoIt direkt das WMI-Objekt für Abfragen nutzen. Das hat nur niemand angeboten, weil wir schlicht keine Möglichkeit haben das auch zu testen. Die WMI Klasse "Lenovo_SetBiosSetting" dürfte nur den wenigsten zur Verfügung stehen. Und wenn ich einen Code nicht mal ansatzweise testen kann, werde ich ihn nicht posten. ;)

  • [...] aber was mir hier an Intelligenz offensichtlichzugetraut wird ist niederschmetternd [...]

    Es wäre natürlich die nächstliegende Lösung gewesen. Aber wir reden hier von einer Enterprise-Umgebung in der nicht jeder machen kann was er will.

    Und woher sollen wir das wissen ?

    Mein Problem: Das Proggi soll auch in Windows PE funktionieren. Das bedeutet dort kann ich obiges als Powershellscript nicht ausführen wegen fehlender runtimes(.Net).

    Das Nachinstallieren fehlender Komponenten IST eine Lösung (gemäß deiner Problembeschreibung) - keine UMGEHUNG :S!

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallo Bugfix,

    danke für deine Antwort. Ich gebe dir recht, dass die genannte WMI-Klasse nur auf Lenovo-Rechnern zu finden ist. Ich hätte mich zumindest über ein Syntax-Beispiel oder eine
    Erklärung dazu gefreut(z.B. so erzeugst du ein Objekt und dann fragt man es so ab und so setzt man dann einen Wert...), da es zum Thema WMI so gut wie keine Dokumentationen
    gibt, bzw. konnte ich keine finden die mir geholfen hätte.

    Natürlich kann eine Umgehung eine Möglichkeit sein aber die geht halt nun mal meistens am eigentlichen Thema vorbei.

  • Hallo Musashi,

    klar, dass man nicht unbedingt herauslesen konnte das es sich um eine Enterprise-Umgebung handelt
    aber man liest eben leider sehr häufig in Foren Hilfestellungen die nicht das eigentliche Problem lösen/erklären sondern die Fragestellung umgehen.

    Ich wollte doch nur wissen wie man herangeht Code zu übersetzen(die PS-Commandlets für die WMI-Abfragen gibt es ja wohl bei AutoIt so nicht ;)) und nicht wie ich den PS-Code
    in der PE-Umgebung(auf die ich keine Einfluss habe ;)) lauffähig machen kann.

  • Ich wollte doch nur wissen wie man herangeht Code zu übersetzen

    Schon ok, aber deine Antwort klang doch etwas unfreundlich ;).

    Versuche mal dieses Skript von water aus dem englischen Forum :

    https://www.autoitscript.com/forum/topic/18…comment=1299051

    (checke die weiteren Beiträge, da es wohl auch von der jeweiligen Win-Version abhängt :/.)

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    • Offizieller Beitrag

    Ich hätte mich zumindest über ein Syntax-Beispiel oder eine
    Erklärung dazu gefreut

    Na, das kannst du haben:

    Zum Erstellen des Codes kannst du AutoIt Script-o-matic verwenden.