如何使用测试连接计算 Powershell 中的平均 ping 响应时间?

问题描述 投票:0回答:2

我是 PS 脚本新手。我的代码需要帮助。 目的:从 .txt 文件中 ping IP 列表并以 csv 格式输出结果。这是到目前为止我的代码。

$Iplist = Get-Content ips.txt
$group = $()
foreach ($ip in $Iplist)
{
   $status = @{ "ServerIP Name" = $ip; "TimeStamp" = (Get-Date -f s) }
   if (Test-Connection $ip -Count 4 -ea 0 | measure-Object -Property ResponseTime -Average)
   {
        $status["Results"] = "Up"
   }
   else
   {
        $status["Results"] = "Down"
   }
   New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
   $group += $serverStatus
}
$group | export-csv c:\ping\results.csv -NoTypeInformation
powershell average
2个回答
4
投票

Test-Connection
返回一个
Win32_PingStatus
对象。

要在 PowerShell 中查看此对象还有什么可用,请输入:

$ping = Test-Connection www.google.com #or insert favorite url here
$ping | Format-List | Out-String

Test-Connection
不仅仅返回布尔值。你真的很接近,但你必须分配返回值才能计算成功的平均值:

$Iplist = Get-Content ips.txt
$group = @()
foreach ($ip in $Iplist) {
  $status = @{ "ServerIP Name" = $ip; "TimeStamp" = (Get-Date -f s) }
  $pings = Test-Connection $ip -Count 4 -ea 0
  if ($pings) {
    $status["AverageResponseTime"] =
        ($pings | Measure-Object -Property ResponseTime -Average).Average
    $status["Results"] = "Up"
  }
  else {
    $status["Results"] = "Down"
  }

  New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
  $group += $serverStatus
}

$group | Export-Csv c:\ping\results.csv -NoTypeInformation

0
投票

简单又实用!非常感谢!!

是否可以像常规 ping 那样以毫秒为单位表示结果?更改 MTU?

© www.soinside.com 2019 - 2024. All rights reserved.