PowerShell新手如何修改批量ping脚本以实现自定义输出格式
修改后的完整脚本
# 先定义你的IP列表,示例如下 $Iplist = @("IP1", "IP2", "IP3") $group = @() foreach ($ip in $Iplist) { # 用有序哈希表保证属性顺序和输出顺序一致 $status = [ordered]@{ "Servidor" = $ip "Fecha" = (Get-Date -Format "dd/MM/yyyy HH:mm") "AverageResponseTime" = $null "MinResponseTime" = $null "MaxResponseTime" = $null "Estado" = $null } $pings = Test-Connection $ip -ErrorAction SilentlyContinue if ($pings) { $responseTimes = $pings.ResponseTime $status["AverageResponseTime"] = ($responseTimes | Measure-Object -Average).Average $status["MinResponseTime"] = ($responseTimes | Measure-Object -Minimum).Minimum.ToString() + "ms" $status["MaxResponseTime"] = ($responseTimes | Measure-Object -Maximum).Maximum.ToString() + "ms" $status["Estado"] = "OK" } else { $status["Estado"] = "Down" $status["AverageResponseTime"] = "N/A" $status["MinResponseTime"] = "N/A" $status["MaxResponseTime"] = "N/A" } $serverStatus = New-Object -TypeName PSObject -Property $status $group += $serverStatus } # 按指定列顺序输出表格,自动对齐 $group | Format-Table -AutoSize
调整说明
- 改用有序哈希表声明状态字段,避免普通哈希表的属性顺序混乱问题,输出列的顺序和你期望的完全匹配
- 新增了最小、最大响应时间的统计逻辑,拼接
ms单位符合目标格式要求 - 增加了
-ErrorAction SilentlyContinue参数,ping不通时不会抛出冗余报错 - 最后输出时
-AutoSize参数会自动调整列宽实现对齐效果
如果需要导出成文本文件保留格式,可以在最后补充一行代码:
$group | Format-Table -AutoSize | Out-File -FilePath "Ping检测结果.txt" -Encoding utf8
内容的提问来源于stack exchange,提问作者Gianluca Grosso
相关产品推荐
相关产品推荐

