none
IP Adressen auslesen RRS feed

  • Frage

  • Hallo zusammen,

    ich möchte mit folgendem Script alle erreichbaren IP Adressen auflisten.

    $test=Get-NetNeighbor | Where-Object -Property state -ne Unreachable | where-object -property state -ne Permanent | Where-Object {$_.AddressFamily -eq "Ipv4"} 
    $test1=$test 
    foreach ($test2 in $test1)
    {
    write-output ("$test2.IPAdress" | select-Object IPAddress | out-string)
    }

    Es werden ins $test1 auch alle erreichbaren IP Adressen angezeigt.

    Leider funktioniert die foreach nicht richtig, denn sie zeigt mir nur die erste IP Adresse an. 

    Ich finde keine Lösung für das Problem. 

    Hat einer von Euch vielleicht ne Idee?

    Danke schonmal und Viele Grüße

    Dienstag, 16. Februar 2021 10:15

Antworten

  • Bitte Code als Code formatieren! Danke

    Da Du ja offenbar nur an IPv4-Adressen interessiert bist und offenbar auch nur an IPs mit dem Status Reachable oder Stale, sollte das Folgende genügen:

    Get-NetNeighbor -AddressFamily IPv4 | 
        Where-Object {
            $_.State -eq 'Reachable' -or
            $_.State -eq 'Stale'
        } | 
            Select-Object -Property IPAddress,State
    Den Output kannst Du z.B. per Pipeline an Export-Csv  weiterleiten ... oder noch eine Namensauflösung dranhängen, oder, oder, oder .... ;-)


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 16. Februar 2021 10:31
  • foreach ($test2 in $test1)
    {
      write-output $test2.IPAddress.ToString()
    } 

    Manchmal macht man halt mehrere Fehler auf einmal.

    a) Schreibfehler
    b) Das Objekt hat diese Property nicht, du brauchst nur ToString(), was bei Ausgabe automatisch ausgeführt wird.

    Dienstag, 16. Februar 2021 12:40

Alle Antworten

  • Bitte Code als Code formatieren! Danke

    Da Du ja offenbar nur an IPv4-Adressen interessiert bist und offenbar auch nur an IPs mit dem Status Reachable oder Stale, sollte das Folgende genügen:

    Get-NetNeighbor -AddressFamily IPv4 | 
        Where-Object {
            $_.State -eq 'Reachable' -or
            $_.State -eq 'Stale'
        } | 
            Select-Object -Property IPAddress,State
    Den Output kannst Du z.B. per Pipeline an Export-Csv  weiterleiten ... oder noch eine Namensauflösung dranhängen, oder, oder, oder .... ;-)


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 16. Februar 2021 10:31
  • Hallo,

    erstmal danke für die Antwort und den Hinweis.

    Allerdings löst das nicht mein Problem. Es ist auch damit immer noch so das nur eine IP Adresse in der Foreach gespeichert wird. Ich brauche das für eine Combobox.

    Dienstag, 16. Februar 2021 10:46
  • Wieso foreach? Ich hatte oben doch geschrieben, dass Du einfach die Ausgabe per Pipe weiterleiten kannst. Wenn Du ausschließlich die IP-Adressen als reine Strings haben möchtest, änderst Du das Select-Object von oben in ein Select-Object -ExpandProperty IPAddress und gut.

    In Deinem Code wird übrigens der Output der foreach-Schleife überhaupt nicht gespeichert. Du gibst ihn nur auf die Konsole aus.  ;-) 

     

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 16. Februar 2021 10:56
  • foreach ($test2 in $test1)
    {
      write-output $test2.IPAddress.ToString()
    } 

    Manchmal macht man halt mehrere Fehler auf einmal.

    a) Schreibfehler
    b) Das Objekt hat diese Property nicht, du brauchst nur ToString(), was bei Ausgabe automatisch ausgeführt wird.

    Dienstag, 16. Februar 2021 12:40