none
IP Adresse auslesen RRS feed

  • Frage

  • Hallo,

    

    ich möchte gerne auf Clients die IP Adresse auslesen. Mit :

    Get-Wmiobject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true" | select IPAddress
    funktioniert dies erstmals prima. Jetzt möchte ich die IP Adresse aber in eine Variable schreiben und versuche es so:
    $_IP = Get-Wmiobject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true" | select IPAddress
    
    Write-Host $_IP
    Nur bekomme ich so nicht die IP Adresse angezeigt, sondern "@{IPADress=System.String[]}. Was mache ich falsch?
    Vielen Dank für eure Hilfe Norbert


    IT Berater

    Montag, 6. Oktober 2014 12:57

Antworten

  • Hi,

    das hat aus meiner was mit dem Ausgabeformat von WMI zu tun.

    Hast Du die Möglichkeit, Get-NetIPAddress zu verwenden (erst ab W8.1/Server 2012 R2 verfügbar)?

    http://technet.microsoft.com/de-de/library/hh826136.aspx

    Ansonsten hilft Dir vielleicht das hier weiter?

    http://stackoverflow.com/questions/3230924/powershell-format-get-wmiobject-output-to-return-only-the-ip-address


    Gruß

    Ben

    MCITP Windows 7

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    • Als Antwort markiert NBC2009 Montag, 6. Oktober 2014 15:53
    Montag, 6. Oktober 2014 14:03

Alle Antworten

  • Hi,

    das hat aus meiner was mit dem Ausgabeformat von WMI zu tun.

    Hast Du die Möglichkeit, Get-NetIPAddress zu verwenden (erst ab W8.1/Server 2012 R2 verfügbar)?

    http://technet.microsoft.com/de-de/library/hh826136.aspx

    Ansonsten hilft Dir vielleicht das hier weiter?

    http://stackoverflow.com/questions/3230924/powershell-format-get-wmiobject-output-to-return-only-the-ip-address


    Gruß

    Ben

    MCITP Windows 7

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    • Als Antwort markiert NBC2009 Montag, 6. Oktober 2014 15:53
    Montag, 6. Oktober 2014 14:03
  • Hallo Ben,

    danke für deinen Beitrag. W8.1 habe ich noch nicht, aber der von dir genannte Beitrag konnte mir helfe. Vielen Dank

    PS: Vielleicht kann mir noch jemand sagen, wieso bei meiner Version nur "Müll" in der Variablen steht.


    IT Berater

    Montag, 6. Oktober 2014 15:53
  • Hallo NBC2009!

    Wie sieht der "Müll" aus?
    Mit welchem Befehl hast du den Müll erzeugt ?

    Ohne diese Angaben können wir dir nicht Helfen.


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Dienstag, 7. Oktober 2014 10:16
  • Hallo Peter,

    steht doch in meinem Erstbeitrag.

    Liebe Grüße

    Norbert


    IT Berater

    Dienstag, 7. Oktober 2014 17:06
  • die Frage ist was du hier machen möchtest, mit dem 1. Befehl gibst du dir ein Objekt aus und schreibst dieses Objekt in die Variable.

    Da Objekte keine "Strings" sind, kannst du diese auch nicht mit Write-Host ausgeben.

    Angenommen du willst dir nur das Objekt ausgeben lassen (in diesem Fall "IPAddress") dann kannst du dir das Write-Host sparen und einfach nur die Variable hinschreiben...

    Dienstag, 7. Oktober 2014 22:57
  • Da du die Antwort von Ben schon als Antwort Markiert hast, bin ich davon ausgegangen das du zwischendurch was anderes Probiert hast.
    Bitte deselektiere diese Antwort als Antwort, da Sie anscheinend dein Problem nicht löst.

    1.)
    Wie Nolayde schon richtig schreibt:
    PowerShell verarbeitet Objekte und keinen Text!Hier muss man die Objekt Properties richtig auslesen

    2.)

    Ein Rechner hat fast immer mehr als eine IP Adresse deshalb gibt es nicht DIE IP-Adresse!
    IP Adressen werden heutzutage als IP Version 4 und als IP Version 6 ausgegeben.

    Deshalb ist das Property IPAddress eigentlich immer eine Liste von IP-Adressen !

    Wenn man beim Select-Object den Parameter -ExpandProperty benutzt dann wird die Liste die in IPAddress steht automatisch vereinzelt.

    so gehts:

    Get-Wmiobject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true" | Select-Object -ExpandProperty  IPAddress

    Wenn die Eckigen Klammer [] in PowerShell direkt hinter einer Typ-Bezeichnung stehen z.B. String[] , dann heißt das, es ist ein LISTE (ein Array) das einzelne Strings also Texte enthält.

    Int[] z.B. ist ein Array mit Zahlen.

    In einem Array können 0 oder mehrere Werte stehen.

    Deshalb muss man das auch immer so behandeln.

    3.)

    Ein Moderner Rechner hat immer mehr als eine "Netzwerkkarte" Bluetooth, RAS,  und NDIS oder USB können auch als "Netzwerkkarte"  auftreten.

    Deshalb hat man auch hier mit mehr als ein Ergebnis zu rechnen!

    Fazit: Hier musst du deine Code immer so schreiben, das dieser mit Arrays klarkommt.

    Dieser Code z.B. holt die erstbeste IP-Adresse aus der liste mit dem Index [0]

    # erstbeste IP-Adresse holen
    (Get-Wmiobject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true").IpAddress[0]
    
    # Zweite IP-Adresse aus dem Array holen (Index 1)
    (Get-Wmiobject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true").IpAddress[1]

     

    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Mittwoch, 8. Oktober 2014 05:28