Capture ping Latency or drops results with powershell - Part1
In my earlier blog I used ping tool to capture Latency and Request time out details in CSV file. Here I have used native powershell Test-Connection cmdlet. One of the flexibility I am getting with Test-connection is ping Multiple IP or Computername.
In my earlier blog I used ping tool to capture Latency and Request time out details in CSV file. Here I have used native powershell Test-Connection cmdlet. One of the flexibility I am getting with Test-connection is ping Multiple IP or Computername.
How you can run this script?
I generally use Powershell ISE for writing script, launch it from
start menu.
You might end up with error if it is blocked to run scripts (This is
by default behavior). You can check the status using Get-ExecutionPolicy cmdlet.
And modify policy to run script using Set-ExecutionPolicy cmdlet (Make sure you
have opened powershell Run as administrator).
It ask for confirmation of registry entries.
Once the Green play button or F5 key pressed script will run and
it will get loaded in the memor.
Now to execute type and press enter, make the necessary changes as
per your requirement.
Ping-Latency -ComputerName 255.255.255.255, MyRemote,
192.168.33.40 -Latency 100 -Hours 1 -File c:\temp\CapturedData.csv
Ping-Latency: is cmdlet
-Computername: Mention more than 1 IP address (255.255.255.255, MyRemote, 192.168.33.40)
-Latency: Above what latency you want to capture data.
-Hours: For how many hours you want to run the cmdlet.
-File: CSV file location
Once it completed check the CSV file.
You can also just check typing Ping-Latency and press enter.
#####################################
## http://kunaludapi.blogspot.com
## Version: 1
## Tested this script on
## 1) Powershell v3
## 2) Windows 7
##
#####################################
function Ping-Latency {
<#
.SYNOPSIS
PowerShell function to get network Latency details
.DESCRIPTION
Includes parameters to monitor server and latecy, and capture data in file.
.EXAMPLE
Ping-Latency -ComputerName 127.0.0.1, MyRemote, 192.168.33.40 -Latency 100 -Hours 1 -File c:\temp\CapturedData.csv
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$False, ValueFromPipeline=$true,
HelpMessage="Enter one or more computer names separated by commas.")]
[alias("Computer","C")]
[string[]]$ComputerNames = $env:COMPUTERNAME,
[Parameter(Mandatory=$False)]
[alias("Latency","L")]
[string]$LatencytoMonitor = 100,
[Parameter(Mandatory=$False)]
[alias("Hour","H")]
[string]$Hours = 1,
[Parameter(Mandatory=$False)]
[alias("File","F")]
[string]$filename = "$env:USERPROFILE\Desktop"
)
Begin {
$time = $(Get-Date).AddMinutes($Hours)
$futuretime = "{0}:{1}" -f $time.Hour, $time.Minute
}
Process {
do
{
foreach ($Computer in $ComputerNames) {
$PingStatus = Test-Connection -ComputerName $computer -Count 1 -ErrorAction SilentlyContinue
if ($PingStatus -eq $null) {
$TestResult = "" | Select-Object Hostname, IPAddress, "Time-ms", DateTime
$TestResult.Hostname = $computer
$TestResult.IpAddress = "NotReachable"
$TestResult."Time-ms" = "RequestTimeOut"
$TestResult.DateTime = Get-Date
$TestResult | Export-Csv -Path $filename -Append -NoTypeInformation
}
elseif ($Pingstatus.ResponseTime -gt $LatencytoMonitor) {
$TestResult = "" | Select-Object Hostname, IPAddress, "Time-ms", DateTime
$TestResult.Hostname = $computer
$TestResult.IpAddress = $pingstatus.IPV4Address
$TestResult."Time-ms" = $pingstatus.ResponseTime
$TestResult.DateTime = Get-Date
$TestResult | Export-Csv -Path $filename -Append -NoTypeInformation
}
else {
#Write-Host "Ping response time to $computer is normal $($pingstatus.ResponseTime)"
}
$RealTime = Get-Date
$currenttime = "{0}:{1}" -f $RealTime.Hour, $RealTime.Minute
}
}
while ($CurrentTime -ne $futuretime)
}
End {}
}
Capture ping Latency or drops results with powershell - Part1
Capture multiple IP Latency or drops results with powershell Test-Connection - Part 2
Schedule PowerShell (.PS1 file) script in Windows Task Scheduler - Part 3
Keywords: capture ping request timed out and high latency
1 comment:
Nice posst
Post a Comment