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"
