Powershell: svarstider mellem Windows-servere

Indlæg af Hanne Mølgaard Plasc

Problem



Dette kan kun være tilfældet for min google-fu, der ikke fungerer korrekt, men jeg forsøger at få eksakte responstid mellem et sæt Windows-servere. Jeg kan bruge følgende type i Powershell:


Test-Connection -ComputerName google.com -count 1


Men dette giver dig kun svarstider i millisekunder:


Source        Destination     IPV4Address      IPV6Address                              Bytes    Time(ms) 
------        -----------     -----------      -----------                              -----    -------- 
ComputerName  google.com      172.217.26.14                                             32       26       


De applikationer, vi bruger, kræver meget hurtige responstider (under 1ms), så det ville være fantastisk, hvis jeg som en simpel lege kunne måle det i mikrosekunder. Jeg prøvede noget som følgende:


$startTime = Get-Date
$testConnection = Test-Connection -ComputerName google.com -count 1
$stopTime = Get-Date
$responseTime = $stopTime - $startTime


Men det går fra 20-30 ms til 120 ms, formentlig siden min maskine skal læse datoer og beregne forskelle, der tager nogle millisekunder.


Jeg antager, at en form for applikation (måske WireShark?) Kunne måle i mikrosekunder, men jeg kunne ikke finde dette. Jeg ved, at for eksempel Active Directory login timestamps logger lige ned til nanosekunder, så det burde at være gennemførlig inden for Powershell-skriptrammen.


Enhver hjælp er værdsat!

Bedste reference


Du kan få responstid som denne:


Test-Connection www.google.com -Count 4 | Measure-Object -Property ResponseTime -Average


og du kan bruge TimeSpan Klassen til at håndtere forskellige tidsintervaller


[timespan]::fromseconds((Test-Connection www.google.com -Count 4 | Measure-Object -Property ResponseTime -Average).average)


Håber det hjælper.