Ich muss zugeben, ich wollte sehen, ob jemand das schon getan hat.
können Sie .NET Framework verwenden, um eine nicht so schlecht-Mans-trace als Powershell-Skript
Hier ein Primer zu implementieren, die schnell funktioniert, aber gefährlich. Auch keine Statistik.
#
# Mid-Waged-Mans-Tracert
#
$ping = new-object System.Net.NetworkInformation.Ping
$timeout = 5000
$maxttl = 64
$address = [string]$args
$message = [System.Text.Encoding]::Default.GetBytes("MESSAGE")
$dontfragment = false
$success = [System.Net.NetworkInformation.IPStatus]::Success
echo "Tracing $address"
for ($ttl=1;$i -le $maxttl; $ttl++) {
$popt = new-object System.Net.NetworkInformation.PingOptions($ttl, $dontfragment)
$reply = $ping.Send($address, $timeout, $message, $popt)
$addr = $reply.Address
$rtt = $reply.RoundtripTime
try {
$dns = [System.Net.Dns]::GetHostByAddress($addr)
} catch {
$dns = "-"
}
$name = $dns.HostName
echo "Hop: $ttl`t= $addr`t($name)"
if($reply.Status -eq $success) {break}
}
Edit:
einige der Gefahr beseitigt durch eine catch-Anweisung hinzufügen. Die einzige Gefahr, die noch vorhanden ist, ist die Tatsache, dass wir nur eine einzige Anforderung pro Hop senden, was bedeuten könnte, dass wir nicht erreichen ein Sprung aufgrund eines unschuldig Paket fallen. Die Lösung dieses Problems bleibt eine Übung für den Leser. Hinweis: (Denken Sie an Schleifen innerhalb von Schleifen)
Bonus: Wir versuchen jetzt, die DNS-Eintrag von jedem Hop zu bekommen!
Sie können das Original 'tracert.exe' von Powershell verwenden, müssen Sie nur die Ausgabe selbst –
Dank Mann zu analysieren, Sie haben mir sehr geholfen !!! – Sylca