PowerShell - Log Ping

Mit dieser Funktion lässt sich die RTT von Pings über Zeit festhalten:

function logping
    {
    param (
        $address
        )

    $filedate = (get-date -Format "yyyy-MM-dd__HH_mm_ss")
    $filename = "$filedate - $address.csv"

    Write-Host "Starting Log: $filename"
    Write-Output """Date"",""Time"",""Response""" | Out-File $filename -Append

    $command = "ping -t -w 1000 $address"

    Invoke-Expression $command | foreach {
        $date = (get-date -Format "yyyy-MM-dd")
        $timestamp = (get-date -Format "HH:mm:ss")
        $output = $_

        
        if (Select-String -InputObject $_ "TTL=")
            {
            $splitoutput = $output.split(" ")

            foreach ($block in $splitoutput)
                {
                if (Select-String -InputObject $block "ms")
                    {
                    $block_split = $block.split("=")
                    foreach ($block_element in $block_split)
                        {
                        if (Select-String -InputObject $block_element "ms")
                            {
                            if (Select-String -InputObject $block_element "<")
                                {                                
                                $miliseconds = $block_element.replace("ms","").split("<")[1]
                                }
                            else
                                {
                                $miliseconds = $block_element.replace("ms","")
                                }
                            Write-Host "Logging - Date: $date - Timestamp: $timestamp - Miliseconds: $miliseconds"
                            Write-Output """$date"",""$timestamp"",""$miliseconds""" | Out-File $filename -Append

                            }
                        }
                    }
                }

            }
        else
            {
            if ($_ -ne "" -and (-not (Select-String -InputObject $_ ":")))
                {
                Write-Host "Logging - Date: $date - Timestamp: $timestamp - Miliseconds: -1"
                Write-Output """$date"",""$timestamp"",""-1""" | Out-File $filename -Append
                }
            }
        }
    }

Danach in ein beschreibbares Verzeichnis Wechseln und einfach mit einem Hostnamen ausführen.
Wenn die Antwort unter 1000ms zurückkommt, wird die Zeit in die Spalte Response eingetragen, ansonsten der Wert -10. Damit lassen sich Ausfälle leichter erkennen.
Bei < 1 ms wird 1ms verwendet.

cd $env:TEMP
logping "192.168.0.1"