这可能只是我的google-fu无法正常工作的情况,但我正在尝试在一组Windows服务器之间获得准确的响应时间。我可以在Powershell中使用以下类型:
Test-Connection -ComputerName google.com -count 1
但是这只会给你响应时间,以毫秒为单位:
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
ComputerName google.com 172.217.26.14 32 26
我们使用的应用程序需要非常快的响应时间(低于1毫秒),所以如果我作为一个简单的外行人可以在几微秒内测量它,那将会很棒。我试过以下的东西:
$startTime = Get-Date
$testConnection = Test-Connection -ComputerName google.com -count 1
$stopTime = Get-Date
$responseTime = $stopTime - $startTime
但这可以从20-30毫秒到120毫秒,大概是因为我的机器必须读取日期并计算差异,这需要花费几毫秒。
我假设某种形式的应用程序(可能是WireShark?)可以在几微秒内测量,但我无法找到它。我知道,例如Active Directory登录时间戳记录甚至低至纳秒,因此应该在Powershell脚本框架中可行。
感谢任何帮助!
答案 0 :(得分:0)
您可以像这样获得响应时间:
Test-Connection www.google.com -Count 4 | Measure-Object -Property ResponseTime -Average
您可以使用 TimeSpan 类来处理不同的时间跨度
[timespan]::fromseconds((Test-Connection www.google.com -Count 4 | Measure-Object -Property ResponseTime -Average).average)
希望它有所帮助。
答案 1 :(得分:0)
为此找到的可行解决方案是将Get-Date的-Format参数与以下内容配合使用:
Get-Date -Format "yyyy-MM-dd HH.mm.ss:fffffff"
这使您可以节省每个滴答声的时间,即一百万分之一秒。有关更多信息:https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings