none
Funktionsergebnis in Listbox anzeigen lassen RRS feed

  • Frage

  • Hallo zusammen,

    ich komme aktuell mit meinem PowerShell Skript nicht weiter und bräuchte ein wenig Unterstützung. Mein Ziel ist es mit dem Skript die aktiven Netzwerkadapter und deren Eigenschaften in einer GUI anzeigen zu lassen. Die Anzeige der Netzwerkadapter klappt mit folgender Funktion:

    Function Get-Netzwerkadapter
    {
       
    $_connected_network_adapter = get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" | select netconnectionid, name, interfaceindex, netconnectionstatus, adaptertype, speed
    $_default_routing = get-wmiobject win32_ip4routetable | ? {$_.Destination -eq "0.0.0.0"}
    foreach ($entry in $_connected_network_adapter){
    	foreach ($entry1 in $_default_routing){ 
    		If ($entry.interfaceindex -eq $entry1.interfaceindex){
                    netsh interface ip show config $entry.netconnectionid > C:\Temp\Info.csv
    			} 
    		} 
    	}
    }

    Hier exportiere ich die ausgelesenen Daten in eine csv Datei. Die CSV Datei wird korrekt erzeugt, hat keine Header und wird einspaltig dargestellt.

    Ich importiere dann die CSV Datei mit

    $data = Import-Csv -Header " " -Path "C:\Temp\Info.csv"

    Und gebe diese in einer Listbox wieder aus

    	#ListBox Netzwerkinformationen
    	$ListBoxNetwork = New-Object System.Windows.Forms.ListBox
    	$ListBoxNetwork.Location = New-Object System.Drawing.Point(10,10)
    	$ListBoxNetwork.Size = New-Object System.Drawing.Size(600,370)
    	$ListBoxNetwork.Items.AddRange($data)
    	$TabNetwork.Controls.Add($ListBoxNetwork)
    	$ListBoxNetwork.add_SelectedIndexChanged($SelectedFile)

    Die Ausgabe klappt auch, allerdings ist die Darstellung mehr als Bescheiden.

    @{ =TEXT1}

    @{ =TEXT2}

    @{ =TEXT3}

    Hat jemand eine Idee, wie ich eine saubere Darstellung in der GUI realisieren kann? Ich könnte mir auch vorstellen den Export und den Import in eine CSV komplett zu umgehen, wenn man die Funktion direkt ausgeben kann, habe dafür aber bisher keine Lösung gefunden.

    Danke schon einmal im Voraus

    Dienstag, 25. Februar 2020 11:09

Antworten

  • Um den Export in die CSV zu sparen, musst du einen leeren Hashtable erzeugen und diesen dann in der Schleife befüllen.

    $hashtable =@{}
    
    foreach ($wert in $werte)
            {
            $script:hashtable +=$wert
            }

    Für das Darstellen von Informationen nutze ich persönlicher lieber XAML, wenn es schön sein soll.

    Gruß

    Dienstag, 25. Februar 2020 11:28
  • > Hat jemand eine Idee, wie ich eine saubere Darstellung in der GUI realisieren kann

    Es kommt darauf an was du mit den Daten machen willst. Möchtest du sie nur -ähnl. wie in der Konsole- als Text ausgeben, würde ich einfach eine Textbox (oder ggfls RichTextBox) nehmen.
    Wenn du die Daten lieber tabellarisch darstellen möchtest würde sich ein ListView-Control anbieten. Hier ist eine umfassende bebilderte Anleitung, leider etwas unübersichtlich, aber es steht alles da was man dazu wissen muß.


    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Dienstag, 25. Februar 2020 13:16
    Moderator
  • Hallo,

    ich glaube, dein Problem ist viel mehr die Aufteilung der Daten in die einzelnen Werte...

    Du musst das ganze erstmal parsen und in die Bereiche Adapter, Eigenschaft und Wert aufteilen damit du dann z.B. "Netzwerkkarte 1", "IPAdresse", "10.10.10.1" erhältst. 

    Einfacher wäre imho, die Netzwerkadapter mit "GET-NetAdapter" auszuwerten und dann auf die einzelnen Attribute über eine Foreach Schleiffe zuzugreifen... so könntest du auf jedes einzelne Attribut jedes Adapters zugreifen ohne vorher groß rumzuparsen...

    Liebe Grüße

    Martin

    Mittwoch, 26. Februar 2020 07:08

Alle Antworten

  • Um den Export in die CSV zu sparen, musst du einen leeren Hashtable erzeugen und diesen dann in der Schleife befüllen.

    $hashtable =@{}
    
    foreach ($wert in $werte)
            {
            $script:hashtable +=$wert
            }

    Für das Darstellen von Informationen nutze ich persönlicher lieber XAML, wenn es schön sein soll.

    Gruß

    Dienstag, 25. Februar 2020 11:28
  • > Hat jemand eine Idee, wie ich eine saubere Darstellung in der GUI realisieren kann

    Es kommt darauf an was du mit den Daten machen willst. Möchtest du sie nur -ähnl. wie in der Konsole- als Text ausgeben, würde ich einfach eine Textbox (oder ggfls RichTextBox) nehmen.
    Wenn du die Daten lieber tabellarisch darstellen möchtest würde sich ein ListView-Control anbieten. Hier ist eine umfassende bebilderte Anleitung, leider etwas unübersichtlich, aber es steht alles da was man dazu wissen muß.


    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Dienstag, 25. Februar 2020 13:16
    Moderator
  • Hallo,

    ich glaube, dein Problem ist viel mehr die Aufteilung der Daten in die einzelnen Werte...

    Du musst das ganze erstmal parsen und in die Bereiche Adapter, Eigenschaft und Wert aufteilen damit du dann z.B. "Netzwerkkarte 1", "IPAdresse", "10.10.10.1" erhältst. 

    Einfacher wäre imho, die Netzwerkadapter mit "GET-NetAdapter" auszuwerten und dann auf die einzelnen Attribute über eine Foreach Schleiffe zuzugreifen... so könntest du auf jedes einzelne Attribut jedes Adapters zugreifen ohne vorher groß rumzuparsen...

    Liebe Grüße

    Martin

    Mittwoch, 26. Februar 2020 07:08