none
Variable auswerten RRS feed

  • Frage

  • Hallo zusammen,

    ich habe eine Abfrage die mir Switche pingt.In der Ausgabe steht dann z.B. dass IP 1.1.1.3 offline ist....

    Ich würde gerne anstatt der IP Namen hinterlegen...

    Zur besseren Erklärung das Script:

    $switche = '1.1.1.1','1.1.1.2','1.1.1.3','1.1.1.4'
                foreach ($switch in $switche)
                {
                   if (test-Connection -ComputerName $switch -Count 1 -Quiet ) 
    		{
    			Write-Host -ForegroundColor Green "$switch Online"
           }
           else
                {
                  Write-Host -ForegroundColor RED "$switch OFFLINE"
                }
                }
                 

    Wenn also nun der Switch offline ist würde ich mir gerne den Namen ausgeben lassen!

    Wo muss ich das hinterlegen?Und wie?

    Freue mich auf eure Hilfe!


    Gruß Toni


    • Bearbeitet tonibert Donnerstag, 22. Januar 2015 07:42
    Donnerstag, 22. Januar 2015 07:42

Antworten

  • Hallo,

    alle Vorteile die ein Import der CSV bringen machst Du mit den beiden naechsten Zeilen kaputt, auf die deine weitere Loesung aufsetzt.

    deine CSV sollte so aussehen:

    IP; Name
    1.1.1.1; Switch 1
    2.2.2.2; Switch 2
    3.3.3.3; Switch 3

    Dann deinen Code leicht abaendern und es sollte gehen.

    $SwitchListe = Import-Csv -Path .\zzz.csv -Delimiter ";"
    foreach ($Switch in $SwitchListe) {
    	if (test-Connection -ComputerName $Switch.IP -Count 1 -Quiet) {
    		Write-Host -ForegroundColor Green "$($Switch.Name) Online"
    	}
    	else {
    		Write-Host -ForegroundColor RED "$($Switch.Name) OFFLINE"
    	}
    }

    Beste Gruesse
    brima


    • Bearbeitet brima Donnerstag, 22. Januar 2015 10:41
    • Als Antwort markiert tonibert Donnerstag, 22. Januar 2015 12:50
    Donnerstag, 22. Januar 2015 10:41

Alle Antworten

  • Hallo Toni!

    Du kannst die IP zu Namen auflösung mit hilfe des DNS und der .NET Klasse System.Net.Dns machen.

    $SwitchIPs = '1.1.1.1','1.1.1.2','1.1.1.3','1.1.1.4'
    foreach ($SwitchIP in $SwitchIPs)
    {
      Try {
        $HostName = ([system.net.dns]::GetHostByAddress($SwitchIP)).hostname
      } Catch {
        $HostName = ''
      }

      If (test-Connection -ComputerName $SwitchIP -Count 1 -Quiet )
        {
            Write-Host -ForegroundColor Green "Online! IP: $SwitchIP Hostname: $HostName"
      }
      else
      {
        Write-Host -ForegroundColor RED "Online! IP: $SwitchIP Hostname: $HostName"
      }
    }


    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+

    Donnerstag, 22. Januar 2015 08:44
  • Hallo Peter,

    ich habe leider nicht geschrieben, dass die Switche bei uns nicht im DNS stehen dürfen!

    Daher suche ich halt einen anderen Weg...

    Danke aber erstmal :-)!


    Gruß Toni

    Donnerstag, 22. Januar 2015 09:04
  • Wenn ein Switch nicht erreichbar ist und er nicht im DNS steht kannst du nur eine DNS ähnliche  (CSV) Tabelle "per Hand" anlegen und diese nutzen.

    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+

    Donnerstag, 22. Januar 2015 09:19
  • Hallo Peter,

    habe es so probiert!

    Leider komme ich trotzdem nicht ans Ziel :

    $Import = Import-Csv -Path E:\switche.csv -Delimiter ";"
    $Switchname = $Import|Select-Object -Property Switchname
    $IPs = $Import|Select-Object -Property IP
    
    foreach ($IP in $IPs)
                {
                   if (test-Connection -ComputerName $IP -Count 1 -Quiet ) 
    		{
    			Write-Host -ForegroundColor Green "$Switchname Online"
           }
           else
                {
                  Write-Host -ForegroundColor RED "$Switchname OFFLINE"
                }
                }
                 

    Gruß Toni



    • Bearbeitet tonibert Donnerstag, 22. Januar 2015 10:11
    Donnerstag, 22. Januar 2015 10:09
  • Hallo,

    alle Vorteile die ein Import der CSV bringen machst Du mit den beiden naechsten Zeilen kaputt, auf die deine weitere Loesung aufsetzt.

    deine CSV sollte so aussehen:

    IP; Name
    1.1.1.1; Switch 1
    2.2.2.2; Switch 2
    3.3.3.3; Switch 3

    Dann deinen Code leicht abaendern und es sollte gehen.

    $SwitchListe = Import-Csv -Path .\zzz.csv -Delimiter ";"
    foreach ($Switch in $SwitchListe) {
    	if (test-Connection -ComputerName $Switch.IP -Count 1 -Quiet) {
    		Write-Host -ForegroundColor Green "$($Switch.Name) Online"
    	}
    	else {
    		Write-Host -ForegroundColor RED "$($Switch.Name) OFFLINE"
    	}
    }

    Beste Gruesse
    brima


    • Bearbeitet brima Donnerstag, 22. Januar 2015 10:41
    • Als Antwort markiert tonibert Donnerstag, 22. Januar 2015 12:50
    Donnerstag, 22. Januar 2015 10:41
  • AHHHHHHHH,

    ich habe es verstanden!

    Durch den Punkt hole ich mir die einzelnen Spalten...nicht durch jeweilige Variablen!

    Es funktioniert bestens...

    Vielen Dank!


    Gruß Toni

    Donnerstag, 22. Januar 2015 12:50