Muszę przyznać, że chciałem sprawdzić, czy ktoś już to zrobił.
Można użyć .NET Framework wdrożyć nie tak niskiej Mans traceroute jako PowerShell Script
Tutaj grunt, że działa szybko, ale niebezpieczne. Również brak statystyk.
#
# 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:
Usunięto niektóre niebezpieczeństwie dodając oświadczenie catch. Jedynym niebezpieczeństwo że wciąż jest obecny, jest fakt, że możemy wysłać tylko jeden wniosek za hopu, co może oznaczać, że nie dotrzeć hop powodu niewinny opakowania kropli. Rozwiązanie tego problemu pozostaje ćwiczeniem dla czytelników. Podpowiedź: (Pomyśl o pętlach w pętlach)
Bonus: Teraz próbujemy uzyskać wpis dns każdego skoku!
Można używać oryginalnego 'tracert.exe' z PowerShell, wystarczy przeanalizować wyjście samemu –
Dzięki stary, masz bardzo mi pomogło !!! – Sylca