PowerShell: Funktion: Ping 1x, warte auf Ergebnis
Moin,
entweder ist es einfach zu spät und ich bin müde oder einfach dumm, weil es sich so basic anfühlt...
Ich will per PowerShell eine Funktion für eine Ping-Abfrage schreiben und nutze hierfür die bereits verfügbare Funktion "Test-Connection" mit dem Parameter -Quiet.
Mit -Quiet gibt er also nur ein $true oder $false aus.
Leider gibt es hier keinen -Wait - den ich gerne selber basteln würde aber nicht hinbekomme.
Problem:
Der Ping kann 2 Sekunden dauern, oder 10 Sekunden, vielleicht auch nur ein paar Millisekunden.
Wenn ich eine IF-Abfrage starte, ob Test_DC $true oder $false, dann skippt er direkt weiter wenn der Ping noch läuft (meist bis immer bei nicht bestehender Verbindung).
Das eigentliche Script im Allgemeinen soll also überprüfen, ob eine Verbindung zu einem Server besteht und dann etwas ausführen...
Hat hier einer Idee wie das umgesetzt werden kann bzw. es eine Alternative gibt?
Mit freundlichen Grüßen
Celiko
entweder ist es einfach zu spät und ich bin müde oder einfach dumm, weil es sich so basic anfühlt...
Ich will per PowerShell eine Funktion für eine Ping-Abfrage schreiben und nutze hierfür die bereits verfügbare Funktion "Test-Connection" mit dem Parameter -Quiet.
Mit -Quiet gibt er also nur ein $true oder $false aus.
Leider gibt es hier keinen -Wait - den ich gerne selber basteln würde aber nicht hinbekomme.
Problem:
Der Ping kann 2 Sekunden dauern, oder 10 Sekunden, vielleicht auch nur ein paar Millisekunden.
Wenn ich eine IF-Abfrage starte, ob Test_DC $true oder $false, dann skippt er direkt weiter wenn der Ping noch läuft (meist bis immer bei nicht bestehender Verbindung).
Das eigentliche Script im Allgemeinen soll also überprüfen, ob eine Verbindung zu einem Server besteht und dann etwas ausführen...
function Test_DC() {
Test-Connection -Computername "Hostname || IPv4" -Count 1 -Quiet
}
Hat hier einer Idee wie das umgesetzt werden kann bzw. es eine Alternative gibt?
Mit freundlichen Grüßen
Celiko
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4952719702
Url: https://administrator.de/contentid/4952719702
Ausgedruckt am: 21.11.2024 um 13:11 Uhr
6 Kommentare
Neuester Kommentar
Ein Ping ist da schneller.und feiner konfigurierbar inkl. Timeout . ....
https://learn.microsoft.com/de-de/dotnet/api/system.net.networkinformati ...
Gruß S.
$ping = New-Object System.Net.NetworkInformation.Ping
if (($ping.Send("hostname",10000)).Status -eq 'Success') {
# whatever
}
Gruß S.
Dann aber bitte hinterher auch noch das Ping Object disposen, denn die Dinger reagieren gerne mal mit falschem Ergebnis wenn man zu viele von ihnen hintereinander erzeugt und nicht wieder frei gibt.
Und Exceptions mit try catch abfangen nicht vergessen.
$ping.Dispose()
Das Dispose() brauchst du nur einmal im Finally-Block schreiben, dann sparst du dir 3 mal das gleiche 😉.
Gruß S.
Gruß S.