Ergebnis "netsh interface show" in Array umsetzen (Anfänger)

  • Werte AutoIt-Profis,

    ich möchte das Ergebnis des folgenden Scripts in ein Array umsetzen. Habe aber keine Idee, ob und wie das funktionieren kann.

    Würde mich über (soweit möglich "anfängerverständliche") Hilfe sehr freuen!


    #include <AutoItConstants.au3>

    $iRun = Run("netsh interface show interface", "", @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    While 1

    Local $sLineAll

    $line = StdoutRead($iRun)

    If @error Then ExitLoop

    $sLineAll &= $line

    WEnd

    MsgBox(0, "", $sLineAll)

  • Was zeigt die Konsolenausgabe, wenn Du folgendes Skript laufen lässt ?

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

  • Konsolenausgabe

    ------------------------------------------

    ConnectionID = LAN-Verbindung

    ConnectionStatus = 2

    Status =

    AdapterType = Ethernet 802.3

    Name = Killer e2200 Gigabit Ethernet Controller (NDIS 6.30)

    NetEnabled = True

    ------------------------------------------

    ConnectionID = Drahtlosnetzwerkverbindung

    ConnectionStatus = 2

    Status =

    AdapterType = Ethernet 802.3

    Name = ASUS PCE-AC88 802.11ac Network Adapter

    NetEnabled = True

    ------------------------------------------

    ConnectionID = VirtualBox Host-Only Network

    ConnectionStatus = 2

    Status =

    AdapterType = Ethernet 802.3

    Name = VirtualBox Host-Only Ethernet Adapter

    NetEnabled = True

    Schonmal vielen Dank Musashi,

    mir fehlt aber der Status (Aktiviert/Deaktviert) meiner Netzwerkadapter. Gibt es da noch eine Möglichkeit dies angezeigt zu bekommen.

    Deswegen mochte ich die Variante über "netsh interface show interface", hier war "schnörkellos" nur der Verbindungs- und Adapterstatus zu sehen.

  • Schonmal vielen Dank Musashi,

    mir fehlt aber der Status (Aktiviert/Deaktviert) meiner Netzwerkadapter. Gibt es da noch eine Möglichkeit dies angezeigt zu bekommen.

    Ich bin nicht ganz sicher ob die Eigenschaft NetEnabled das hergibt (True=aktiviert /False=deaktiviert) :/.

    Infos findest Du hier : Win32_NetworkAdapter

    Was zeigt die Konsolenausgabe, wenn Du dieses Skript laufen lässt ?

    Hast Du denn einen deaktivierten Netzwerkadapter ?

    Poste bitte mal einen Screenshot Deiner MsgBox aus Beitrag 1.

    EDIT :

    Deswegen mochte ich die Variante über "netsh interface show interface", hier war "schnörkellos" nur der Verbindungs- und Adapterstatus zu sehen.

    Man kann natürlich die Ausgabe von StdoutRead 'auswerten', aber WMI ist meiner Meinung nach die 'bessere' Wahl.

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

    Einmal editiert, zuletzt von Musashi (15. April 2020 um 17:13)

  • BugFix

    Vielen Dank! Ich hatte Dein Script schon bei meiner Recherche gefunden. Leider bleibt das Array leer. Bin auch keinesfalls so fit, dass umzuschreiben,

    (weil ich es nichtmal durchdringe). Bitte auch keine Mühen investieren. Ich bin sellber schon ein Stückchen weitergekommen, das "netsh interface"

    auszuwerten.

    Musashi

    Auch Dir vielen Dank. Ich "wurstele" mich langsam auf die Zielgerade. Habe trotzdem mal den einen Screenshot des Ergebnisses aus dem "netsh interface"

    angehängt. WIe gesagt, es beeinhaltet alles was ich brauche. (Adapter, Status, und Verbindung). Es gibt ziemlich viele Scripte bzgl. Netzwerkadaptern,

    aber die sind mir alle zu umfangreich und ich habe bisher keins gefunden, dass den Status Aktiviert/Deaktiviert abbildet. Denn ja, ich deaktive Adapter, je
    nach dem ob ich per LAN oder WLAN ins Internet gehe.


    MfG Kilo

  • Bitte auch keine Mühen investieren. Ich bin selber schon ein Stückchen weitergekommen, das "netsh interface" auszuwerten.

    Wenn Du diesen Weg gehen möchtest, ist das ok.

    Was zeigt ArrayDisplay bei Dir an, wenn Du folgendes Skript ausführst ?

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

  • Da gibt es millionenfach viele Ansätze um dies zu bewerkstelligen.
    Wenn es darum geht solche printf-Tabellen wieder zu einem Array zu zerhackstückeln habe ich mir für sowas mal eine Funktion gebastelt damit ich mir nicht immer neu hierzu Gedanken machen muss:

    Die Funktion die dabei herausgekommen ist, ist ziemlich unscheinbar aber im Grunde doch verdammt mächtig.

    Mal als Beispiel was du mit der in deinem Beispiel noch anstellen könntest (einfach mal die entsprechende Stelle im Skript austauschen):

    Einmal editiert, zuletzt von AspirinJunkie (16. April 2020 um 12:50) aus folgendem Grund: Spaltenbreite der 3. Spalte stimmte nicht

  • @AspirinJunkie

    Die Funktion die dabei herausgekommen ist, ist ziemlich unscheinbar aber im Grunde doch verdammt mächtig

    Also wenn Du das "unscheinbar" nennst ... ich nenne soetwas genial! Bis dahin liegt wohl noch ein sehr langer Weg vor mir.

    Ich hab's mir jetzt mühsam mit etlichen Durchläufen unter Nutzung von "Replace" und "StringStripWS" hingebastelt.

    Traue mich einfach nicht an die "regular expressions" heran. Dafür ist auch meine AutoIt-Nutzung nicht intensiv genug.

    Herzlichen Dank!

    Musashi

    Auch DIr nochmal vielen Dank! Nach etlichen (Fehl-)Versuchen ist es gestern auch mir aufgefallen, dass man das Ergebnis

    via @CRLF splitten kann/muss. Habe jetzt noch die vielen Leerzeichen gefiltert und bin mit dem Ergebnis (für meinen Bedarf)
    sehr zufrieden.

    Setze den Thread jetzt auf beantwortet => dickes Dankeschön!

  • Traue mich einfach nicht an die "regular expressions" heran. Dafür ist auch meine AutoIt-Nutzung nicht intensiv genug.

    Das lege ich dir aber unbedingt ans Herz. Und das völlig unabhängig von AutoIt. Regex werden universal nahezu überall verwendet!
    Sei es eine andere Programmiersprache oder ein Editor wo du per RegEx ersetzen kannst oder ein Dateisuchprogramm (wie z.B. FileLocator) wo du per Regex ganz fein granuliert suchen und filtern kannst.
    Kurz: RegEx haben erstmal nix mit Autoit zu tun sondern du triffst so oft auf sie. Verbunden mit ihrer Mächtigkeit sollte man sich diese unbedingt zu Gemüte führen. Auch wenn diese zuerst ziemlich abschreckend wirken - tatsächlich sind die gar nicht so böse.

    Ein Tutorial hierzu findest du sogar hier auf autoit.de: >>RegEx-Tutorial<<

    Als Werkzeug um RegEx zu Testen und zu entwickeln kommt man heute im Grunde nicht mehr an regex101.com vorbei (im Tutorial wird noch auf RegExBuddy verwiesen).