Benutzer mit den meisten Antworten
Wait-Event und Test-Connection verknüpfen

Frage
-
Hallo liebes Forum,
Ich bin auf der Suche nach einer Lösung für folgendes Problem: Ich möchte mit Test connection einen Rechner im Netzwerk anpingen, dann nachdem der Ping geschickt wurde solange warten, bis die Antwort kommt, dass das Paket ankam um dann das nächste Paket loszuschicken. Es geht im großen und ganzen darum Timeout Zeiten zu messen, wenn ich das Lankabel ziehe. Hauptproblem ist nun, dass ich beim wait-event das Attribut sourceIdentifier nicht verstehe, aber das Gefühl habe, dass das die Lösung sein könnte.
Wie kann ich das umsetzen?
Gruß
Simon
Antworten
-
Versuch es mal so:
$target = "myserver" $start = 0
$count = 0
ping $target -t | foreach-object{ $count++ if ($count -gt 2){ if ( (!($_ -match "Antwort")) -and ($start -ne 1) ) { write-host "Starte Messung..." $a = (get-date) $start = 1 } if (( $start -eq 1) -and ($_ -match "Antwort")){ $b = (get-date) - $a write-host "Zeit:" $b $start = 0} } }
Das Skript misst die Zeit zwischen dem ersten Auftreten von "Zeitüberschreitung der Anforderung" und dem nächsten "Antwort von...". Ich habe Ping benutzt, da es im Gegensatzt zu test-connection auch bei Nichterreichbarkeit ein verwertbares Ergebnis liefert.Grundsätzlich ist die Methode aber ziemlich ungenau, da du ja Zeitverzögerungen bei den Ping-Antworten hast.
Grüße, Denniver
http://bytecookie.wordpress.com/
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 23. Juni 2011 13:04
Alle Antworten
-
Hallo Simon,
mir ist weder klar was du genau messen möchtest, noch warum du Events benutzen willst, wo doch die Ergebnisse bei Test-Connection schön nach der Reihe eintrudeln und weiterverarbeitet werden können. Vielleicht kannst du das nochmal genauer erläutern. Poste doch bitte auch mal dein bisheriges Skript.
Grüße, Denniver
http://bytecookie.wordpress.com/ -
Hi,
ich habs jetzt ein bisschen umgestellt und es sieht folgendermaßen aus:
$now = get-date -format yyyy_MM_dd_hh_mm_ss new-item $pwd\$now.txt -type file #$pings = test-connection 172.17.23.100 -count 10 $max $nextValue for ($i = 0; $i -lt 30; $i++) { wait-event -timeout 1 echo $i $nextValue = (test-connection 172.17.23.100 -count 1).responseTime if ($max -lt $nextValue) { $max = $nextValue } } #$pings | format-table Address, ProtocolAddress, ResponseTime | out-file $pwd\$now.txt add-content $pwd\$now.txt "Maximaler Wert $max"
Leider hab ich gerade keine Zeit mehr, aber es funktioniert nicht so, wie ich es gerne hätte =/ Wie gesagt, ich würde mir gerne die Zeit ausgeben lassen, die die beiden Rechner nicht verbunden waren. Ich möchte im Endeffekt sehen,wie lange meine virtuelle Maschine braucht um sich zu erholen,wenn einer der beiden redundanten Rechner per Netzwerkkabel entfernt wird.Gruß
Simon
-
Versuch es mal so:
$target = "myserver" $start = 0
$count = 0
ping $target -t | foreach-object{ $count++ if ($count -gt 2){ if ( (!($_ -match "Antwort")) -and ($start -ne 1) ) { write-host "Starte Messung..." $a = (get-date) $start = 1 } if (( $start -eq 1) -and ($_ -match "Antwort")){ $b = (get-date) - $a write-host "Zeit:" $b $start = 0} } }
Das Skript misst die Zeit zwischen dem ersten Auftreten von "Zeitüberschreitung der Anforderung" und dem nächsten "Antwort von...". Ich habe Ping benutzt, da es im Gegensatzt zu test-connection auch bei Nichterreichbarkeit ein verwertbares Ergebnis liefert.Grundsätzlich ist die Methode aber ziemlich ungenau, da du ja Zeitverzögerungen bei den Ping-Antworten hast.
Grüße, Denniver
http://bytecookie.wordpress.com/
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 23. Juni 2011 13:04
-
Das sieht schon mal ziemlich gut aus,aber irgendwie funktioniert es bei mir nicht,wie ich das gehofft habe. Ich habe noch ein bisschen was geändert, aus der 2. if Abfrage eine elseif gemacht, den startwert als boolean gesetzt, aber nichts strukturänderndes. Wie auch immer, wenn ich die Netzwerkkabel ziehe, zählt die Schleife gemütlich weiter. Pro Ping geht er entweder in die obere If-Abfrage und im nächsten Ping in die Untere. Das wechselt dann immer so durch, ohne Pingzeiten aufzuzählen.
p.s. ich hab ein englisches Windows, aber habe den String "Antwort" durch "Reply" ersetzt, daran kann es also nicht liegen...
-
Das Skript funktioniert, ich hab es gerade nochmal getestet. Wichtig ist nur, das beim Skriptstart der Ping erstmal eine Antwort erhält und du dann erst das Kabel ziehst. Aber die ganze Nummer ist -wie bereits erwähnt- wirklich derart ungenau, das ich an deiner Stelle einfach eine Stoppuhr nehmen würde. :)
Wenn du es aber unbedingt per Ping machen möchtest, nimm nochmal das von mir gepostete Skript, genau so wie es ist und ersetze einfach die beiden "Antwort" durch "Reply", sonst bitte nichts. Und dann teste es nochmal.
Grüße, Denniver
http://bytecookie.wordpress.com/