Benutzer mit den meisten Antworten
Variable auswerten

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
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 3Dann 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
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+- Bearbeitet Peter Kriegel Donnerstag, 22. Januar 2015 08:45
-
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+ -
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
-
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 3Dann 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