Jak sprawdzić dostępność adresu IP, nazwy DNS? Każdemu przychodzi do głowy polecenie PING. To sprawdzone rozwiązanie chociaż jest ono w środowisku Windows dość ograniczone w parametry. Całe szczęście mamy PowerShella i możemy „łączyć” ping z jego możliwościami lub użyć innych poleceń . Jeżeli jesteście ciekawi w jaki sposób uzyskać timetamp przy pingu? Jak pingować kilka adresów jednocześnie albo w jakis sposób sprawdzić dostępność portu w PowerShell…. czytajcie dalej
Użyjmy więc trzech poleceń jednocześnie, dla każdego z pozoru proste zadanie sprawdzenia dostępności adresu 1.1.1.1:
ping 1.1.1.1
Test-Connection 1.1.1.1
Test-NetConnection
Różnice widać od razu, najwięcej informacji zwróci nam ostatnie polecenie ja jednak nie będę przepisywął informacji z pomocy, za to gorąco was do niej odsyłam. To co najważniejsze to że Test-NetConnection pozwoli nam sprawdzić nawet dostępność określonego portu i dowiemy się z jakiego interfejsu wysłaliśmy zapytanie:
Test-NetConnection nie pozwoli nam jednak sprawdzić kilku adresów jednocześnie – tutaj musimy wrócić do trochę starszego polecenia Test-Connection :
$ip = "1.1.1.1","8.8.8.8","85.128.200.73"
Test-Connection $ip
A w jaki sposób uzyskać informacje o dokładnej dacie i czasie odpowiedzi? Niestety tak jak pisałem wcześniej Windowsowy ping nie ma odpowiedniego przełącznika/parametru zatem spróbujmy połączyć go z Get-Date :
ping 1.1.1.1 -t | Foreach {$_; Get-Date -Format "yyyy-MM-dd HH:mm:ss"}
Oczywiście można pobawić się w dowolne formatowanie wyników.
Idźmy o krok dalej, jak wyświetlić informacje tylko kiedy adres nie odpowiada?
$ip = "10.10.1.119"
while ($true) {
$result = Test-NetConnection $ip -InformationLevel Quiet
if (!$result) {
Write-Host "Ping not available: $(Get-Date)"
}
Start-Sleep -Seconds 1
}
Oczywiście możemy modyfikować nasz skrypt do woli, tak aby uzyskać informacje tylko wtedy kiedy dany adres nie odpowiada na określonym porcie:
$target = "79.137.68.123"
$port = "3389"
while ($true) {
$result = Test-NetConnection $target -Port $port -InformationLevel Quiet
if (!$result) {
Write-Host "Port not available: $(Get-Date)"
}
Start-Sleep -Seconds 1
}
Prawda że sporo możliwości? Są to przykłady jednych z częściej używanych przeze mnie skryptów do „monitorowania” dostępności adresu/portu. Sprawdźcie sami!