Calculate Time-to-First-Byte with PowerShell script (Ping-Url)
Technorati Tags: powershell,sharepoint
One of the ways the Microsoft IT team monitors performance of our internal SharePoint servers is using a tool which calculates time-to-first-byte for a client-generated HTTP request (code at the end of this whitepaper). This gives us a client-based perspective of how long pages are taking to load.
It doesn’t take much to create a PowerShell function that does the same thing.
Pass an array of strings representing URLs and you’ll get a table with duration, start, and end times:
$array = @( "https://www.bing.com", "https://www.google.com", "https://www.facebook.com")$array | Ping-Url |
Or just call Ping-Url with one string parameter representing the URL
Ping-Url "https://www.bing.com" |
Here's the actual script with the function:
function Ping-Url { param( [Parameter(ValueFromPipeline=$true)][string] $url ) process { $request = [System.Net.WebRequest]::Create( $url ) $request.UseDefaultCredentials = $true $request.Timeout = 90000; $startTime = Get-Date $request.GetResponse() > $null $stopTime = Get-Date $object = New-Object PSObject -Property @{ Url = $request.RequestUri Duration = $stopTime-$startTime StartTime = $startTime EndTime = $stopTime } | Select-Object Url, Duration, StartTime, EndTime # to ensure order $object }} |